科研入门 - 2024暑假
会议
第一次会议记录- word 的实用技巧
- 基本格式
- 图表排版
- 公式编辑排版
- 批注与修订
- 参考文献
- 页码设置
- 常用技巧
- 大型文档编辑
基本格式
- 常用字体的格式什么?
- 如何快速设置全文的字体和字号?
- 常用字号是什么?
- 写出段落的四个基本要求
- 文档标题一般采用什么样式定义
- 导航窗格在哪里, 如何开启和关闭
- 样式中没有标题2 和标题3 的时候如何解决
- 标题样式是否可以修改?
图表排版
- 代码在论文中如何表示
- 表头的交叉引用有什么作用
- 表格斜线的画法?
- 图片交叉引用的作用
- 作图工具选择?
- 图片插入后不显示/ 浮动一般是什么原因
公式编辑排版
- 公式编辑软件推荐?
- 公式是否可以进行交叉引用
https://www.latex-project.org/get/ mac 用户推荐到这里下载 latex
其他
当对论文不想直接修改,而给出修改意见时候如何做
在哪里找到页码设置
如何取消自动编号
如何进行大小写切换
如何取消引用源
如何消除格式
如何创建空白页
如何锁定
第二次会议记录- Kan 论文讲解
- kan 主要学习的是B-spline的线性组合构建待求解问题的隐含函数(规律)
- Kan 的学习构成有两种方式
2.1 自动学习基函数(B-Spline)
2.2 手动设定基函数(例如文中的 3个例子)
第三次会议 代码讲解
- 对于数据的一些特殊处理过程
- 随机生成一个三维点, 投影
linspace
是 NumPy 库中的一个函数,用于创建一个指定间隔内的等差数列。其基本语法如下:
1 | numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0) |
参数解释如下:
start
: 数列的起始值。stop
: 数列的结束值。num
: 生成的数值个数,默认为50。endpoint
: 如果为True(默认值),则包含stop
值;如果为False,则不包含stop
值。retstep
: 如果为True,则返回样本间的步长。dtype
: 输出数组的类型。axis
: 结果在其中存放样本的轴。对于创建具有多维形状的样本很有用。
示例如下:
1 | import numpy as np |
输出:
1 | [0. 0.11111111 0.22222222 0.33333333 0.44444444 0.55555556 |
在这个示例中,linspace
函数生成了一个从 0 到 1 的等间距的 10 个数值的数组。
- 激活函数 奇偶不同
- 不同函数的网络结构不同,或可以改进方法
- 实验配置 鲁棒, 对于不同的下游任务都可以使用同样的 实验配置
reduce 和 mean 的区别?
- 这里自动和手动有啥区别?
- 缩放因子
- 对缩放加一个噪声- 作用?
- scale_base 的用法?
scale_base 的作用是在初始化时对每一层进行标准化处理,并加入一定的噪声,帮助模型在训练初期有更好的数值稳定性和收敛性。
- 符号计算是干啥的?
第四次会议 - 深度学习方案设计
7天深度学习学习计划
天数 | 内容 | 学习时间 | 资源 |
---|---|---|---|
第一天 | 基本概念, 基础知识,反向传播 | 4-5小时 | 李宏毅的两节课-ml和dl的基本概念 5 分钟系列基础知识 手算- 反向传播 |
第二天 | 搭建和练习pytorch或tensorflow | 4-5小时 | tensorflow pytorch |
第三天 | 卷积神经网络 | 4-5小时 | CNN- 李宏毅 ppt |
第四天 | 实践:实现简单的CNN进行图像分类 minist手写数字识别 | 4-5小时 | 使用任意方法,主要了解深度学习的基本流程 https://tyut.host:5007/dl-framework/docs/Experiment/exp2 |
第五天 | RNN 学习 | 4-5小时 | RNN- 李宏毅上下 ppt |
第五天 扩展 | RNN 实践 | / | https://tyut.host:5007/dl-framework/docs/Experiment/exp3 |
第六天 | 注意力机制 | 4-5小时 | 注意力机制-李宏毅 transformer ppt |
第七天 | 复习:回顾所有概念 | 4-5小时 |
论文阅读
Paper1 - DCF
一些准备工作:对于集成(ensemble)算法的回顾
Boosting和Bagging的介绍
Bagging(Bootstrap Aggregating)
Bagging是一种并行集成学习方法,通过构建多个独立的基学习器并将其预测结果进行平均(对于回归任务)或投票(对于分类任务)来提高模型的性能和稳定性。以下是Bagging的关键步骤:
数据重采样:从原始训练数据集中通过有放回抽样(Bootstrap)生成多个子数据集。每个子数据集与原始数据集的大小相同,但可能包含重复的数据点。
构建基学习器:在每个子数据集上训练一个基学习器(例如决策树),生成多个独立的模型。
聚合结果:对于分类任务,将所有基学习器的预测结果进行投票表决;对于回归任务,将所有基学习器的预测结果取平均值。
Bagging通过减少模型的方差来提高稳定性和准确性,尤其适用于高方差模型(如决策树)。典型的Bagging方法包括随机森林(Random Forest),其通过在训练每棵树时随机选择特征子集进一步增加模型的多样性。
Boosting
Boosting是一种串行集成学习方法,通过逐步构建基学习器,每个新学习器都试图纠正其前一个学习器的错误预测,从而提高模型的性能。以下是Boosting的关键步骤:
初始化:使用初始权重训练第一个基学习器。
训练基学习器:每次训练时,根据前一个学习器的错误率调整数据点的权重。错误分类的数据点权重增加,使得下一个基学习器更多地关注这些困难样本。
组合基学习器:每个基学习器都有一个权重,根据其性能确定。最终模型是所有基学习器加权组合的结果。
Boosting通过减少模型的偏差来提高准确性,适用于弱学习器(如浅层决策树),使得它们在一系列的迭代中逐步变强。典型的Boosting方法包括AdaBoost和梯度提升机(Gradient Boosting Machine,GBM)。
Bagging与Boosting的对比
训练方式:
- Bagging:并行训练多个基学习器,每个学习器独立工作。
- Boosting:串行训练基学习器,每个学习器依赖前一个学习器的结果。
重点:
- Bagging:通过减少方差提高模型稳定性。
- Boosting:通过减少偏差提高模型准确性。
应用:
- Bagging:适用于高方差模型,如决策树。
- Boosting:适用于弱学习器,通过多次迭代增强其性能。
Boosting的具体算法实现步骤
以下是Boosting的一般实现步骤,以AdaBoost(Adaptive Boosting)为例:
初始化权重:对每个训练样本赋予一个初始权重。通常,权重初始值相等,设为 $\frac{1}{N}$,其中 (N) 是样本总数。
迭代训练基学习器:
- 对于每一轮 (t):
- 使用当前样本权重训练一个基学习器 $h_t$。
- 计算基学习器的错误率 $\varepsilon_t$,即被错误分类样本的权重总和。
- 计算基学习器的权重 $\alpha_t$,通常根据错误率来调整,如 $\alpha_t = \frac{1}{2} \ln\left(\frac{1 - \varepsilon_t}{\varepsilon_t}\right)$。
- 更新样本权重:增加被错误分类样本的权重,减少被正确分类样本的权重。更新规则为:$w_{i}^{(t+1)} = w_{i}^{(t)} \exp(\alpha_t \cdot I(y_i \neq h_t(x_i)))$其中 (I) 是指示函数。
- 规范化权重,使所有权重和为1。
- 对于每一轮 (t):
组合基学习器:将所有基学习器的加权投票或加权和作为最终模型的输出。对于分类问题,最终模型为 $\text{sign}\left(\sum_t \alpha_t h_t(x)\right)$。
Python代码示例:实现AdaBoost
1 | import numpy as np |
解释
- AdaBoost类:定义了一个AdaBoost类,包括初始化、训练(fit)和预测(predict)方法。
- fit方法:实现了AdaBoost的训练过程,包括样本权重的初始化、基学习器的训练、错误率的计算、基学习器权重的更新以及样本权重的更新和规范化。
- predict方法:实现了AdaBoost的预测过程,通过加权投票得到最终预测结果。
- 示例数据:创建了一些示例数据,并使用AdaBoost模型进行训练和预测,最后输出预测结果和准确率。
通过这个示例代码,可以更直观地理解Boosting的实现过程和实际应用。
论文的核心技术和提问
- 词向量的处理, n 的不一致性,如何处理?(代码中有)
- 如何体现动态性?
使用boosting的动态性和梯度下降法有什么区别(论文中有答案)
Paper2 - Adap‐BDCM
一些准备工作:对于论文题目的理解
FEM:门控注意力机制(GAM)
CNV(拷贝数变异)数据集
双线性模型
FSM 中使用Lasso算法获取与类别相关的特征
门控注意力机制(Gated Attention Mechanism, GAM)是一种增强神经网络模型性能的方法,特别是在处理高维数据或复杂任务时。门控注意力机制结合了门控单元(如LSTM或GRU)的思想和注意力机制,以更有效地选择和聚焦重要信息,从而改善模型的表现。以下是门控注意力机制的基本原理和操作步骤:
门控注意力机制的基本原理
输入信息的表示:给定输入数据 $X = [x_1, x_2, \dots, x_n]$,通常是高维数据的序列表示。
计算注意力权重:使用注意力机制计算每个输入的权重。常用的注意力机制包括点积注意力(Dot-Product Attention)和加性注意力(Additive Attention)。这些权重表示输入数据中每个部分的重要性。
$$
\alpha_i = \text{Attention}(x_i, \theta)
$$
其中,$\alpha_i$ 是第 (i) 个输入的注意力权重,$\theta$ 是注意力机制的参数。门控单元的引入:使用门控单元(如LSTM或GRU)来进一步处理输入信息。这些单元有选择性地记忆和遗忘信息的能力,可以捕捉序列数据中的长短期依赖关系。
$$
h_i = \text{GatedUnit}(x_i, h_{i-1})
$$
其中,$h_i$是第 (i) 个时刻的隐藏状态。结合注意力权重和门控单元输出:将注意力权重与门控单元的输出结合起来,得到最终的表示。
$$
z_i = \alpha_i \cdot h_i
$$输出表示:将所有的加权表示进行聚合(例如,通过求和或平均),得到最终的输出。
$$
Z = \sum_{i=1}^n z_i
$$
门控注意力机制的优点
- 增强模型的选择能力:通过注意力机制,模型可以聚焦于重要的信息,忽略不相关的部分,从而提高预测的准确性。
- 处理长距离依赖:门控单元(如LSTM或GRU)能够捕捉长短期依赖关系,适用于处理序列数据。
- 提高模型的鲁棒性:结合注意力机制和门控单元,模型在处理复杂任务时表现更为稳健。
应用领域
门控注意力机制广泛应用于自然语言处理(如机器翻译、文本分类)、计算机视觉(如图像分类、目标检测)以及时间序列预测等领域。
目前遇到的一些问题:
- 还没有来得及在使用cuda的模型上跑
- 学长那边时间安排紧
考虑的解决方案:
- 放到云服务器上试一下 - 8.13之前解决