Logistic regression LR的完整内容
1. 为什么用sigmoid函数?
- Sigmoid函数能够把原本的函数压缩在0~1之间,适合作为概率,进而可以分类
- 写成指数族分布的形式后,有sigmoid函数的形式
- logistic regression服从伯努利分布,根据伯努利分布的性质,再利用最大熵学习的过程,可以推导出sigmod函数。
2. 交叉熵
3. MLP和MAE 答案参考
- MLP对应频率学派,认为存在唯一真值, MAP对应贝叶斯学派,认为有一定的概率分布
- 最大后验等于最大似然后面加关于先验分布的(log)项
- 在MAP中使用一个高斯分布的先验等价于在MLE中采用L2的regularizaton!
- 交叉熵损失函数本质上是最大似然估计MLE,正则化等价于MLE+先验概率。所以,从贝叶斯的角度看,损失函数+正则化就是贝叶斯最大后验估计MAP。
4. 反向传播
见ipad笔记
5. BN和LN 资料1 资料2
BN:为什么?因为Internal Covariate Shift;即在训练过程中,中间层数据分布发生改变的情况。非线性变换前的激活输入值随着网络深度加深,分布逐渐发生偏移或者变动,逐渐往非线性函数的取值区间的上下限两端靠近,导致反向传播时低层神经网络的梯度消失,从而收敛速度慢。
灵感可能来源于对输入数据做白化,深层神经网络每个隐层神经元的激活值做简化版本的白化。把刚刚所说的输入分布强制拉回到均值为0方差为1的比较标准的正态分布。
怎么做?标准化+scale and shift.在正态分布限制下,网络的表达能力下降,所以加入一定的反操作。
好处:①提升收敛速度,加快训练过程。②使模型具有正则化效果,采用BN算法后可以选择更小的L2正则约束参数,因为BN本身具有提高网络泛化能力的特性。③使得梯度变平缓,从而可以使用大的学习率。④增强优化器,例如sigmoid函数,在没有使用BN之前它的迭代是震荡的,不稳定的,在使用了BN之后有了非常明显的提升。
LN:LN是根据一个样本的特征数进行归一化;BN是根据不同样本的同一特征归一化,其余都很类似 参考1
1、BN是在batch size样本上各个维度做标准化的,所以size越大肯定越能得出合理的μ和σ来做标准化,因此BN比较依赖size的大小。
2、在训练的时候,是分批量进行填入模型的,但是在预测的时候,如果只有一个样本或者很少量的样本来做inference,这个时候用BN显然偏差很大,例如在线学习场景。
3、RNN是一个动态的网络,也就是size是变化的,可大可小,造成多样本维度都没法对齐,所以不适合用BN。
LN带来的优势:
1、Layer Normalization是每个样本内部做标准化,跟size没关系,不受其影响。
2、RNN中LN也不受影响,内部自己做标准化,所以LN的应用面更广。
BN放在激活前后?
一般是卷积-BN-Relu. Sigmoid:如果先BN再Sigmoid,由于BN后方差接近于1,均值接近于0,使得BN后的数据接近于Sigmoid的线性区域,降低了激活函数的非线性能力,这种情况下建议Sigmoid+BN。 Relu:如果先Relu再BN,Relu后部分神经元已经失活,失活的神经元将对BN的归一化产生影响,这种情况下建议BN+Relu。
6. 正则化
如何选择L1和L2
如果特征是高维稀疏的,则使用L1正则;如果特征是低维稠密的,则使用L2正则
从解空间的形状来看,L1范数是以原点为中心的菱形,而L2范数是以原点为中心的圆。目标函数的解,是原目标函数和正则化项的切点。对于L1范数而言,随着正则化项的权重逐渐增大,它与原目标函数的交点会不断接近坐标轴,最终落在坐标轴上,这时候就会有权重w为0的情况;而对于L2范数而言,无论正则化项的权重如何改变,它和目标函数的交点也都会落在象限上。因此,L1正则化比L2正则化更容易得到稀疏解的原因。
应用场景:
L1使模型中尽可能多的参数值为0,因此适用于:模型剪枝,模型压缩,特征选择。是一种从改变模型结构的角度(减少模型参数的数量)解决过拟合的方式。
L2使模型中的所有参数值尽可能小,使得模型尽量不依赖于某几个特殊的特征,而是使每个特征都能得到尽量均衡的权重,因此适合解决普通的过拟合问题,即从参数分布(使分布尽可能的均匀)的角度解决过拟合问题。
L1和L2的区别:
- L1正则化对应L1范式(Lasso); L2正则化对应L2范式(岭回归)
- L1正则化得到稀疏矩阵,自动进行特征选择;L2正则化让参数尽可能小,防止过拟合;
- L1正则化趋于选择少量特征,其他特征都是0;L2正则化趋于选择更多的特征,这些特征都会接近与0
- L1对应拉普拉斯分布先验;L2对应于高斯分布先验。
降维
PCA:无监督,适用于普通的降维;找到线性平面,最大化投影方差;方法:①对样本数据进行中心化处理。②求样本协方差矩阵。③对样本协方差矩阵特征值分解;④取前几个最大特征值和对应的特征向量,然后特征向量乘以原来的数据,实现降维(即映射到低维空间)
通过核映射扩展到核PCA,从而非线性降维。
最大方差=最小平方误差
LDA:有监督,适用于分类;投影,最大化类间距离和最小化类内距离;也可以用核扩展
集成学习
1. Boosting与Bagging
Boosting:训练基分类器时采用串行的方式,对前一层基分类器分错的的样本,给予更高的权重;测试时,根据各层分类器的结果的加权得到最终结果。减小bias
Bagging:并行训练基分类器,例如随机森林:基于决策树基分类器的Bagging。减小variance(为什么?百面page315)
GBDT:根据当前模型损失函数的负梯度信息来训练新加入的弱分类器, 然后将训练好的弱分类器以累加的形式结合到现有模型中
EM算法
含隐变量的概率模型极大似然估计或极大后验概率估计的迭代算法。E-step:计算联合分布的条件概率期望。M-step:极大以上期望,得到参数新的估计值
过拟合
正则化,增加训练数据,数据增强,标签平滑,BatchNorm,early-stop,交叉验证,Dropout,pre-trained,引入先验知识
数据增强:旋转、缩放、平移、裁剪、改变视角、遮挡某局部区域,添加噪声,条件生成对抗网络(Conditional GAN, CGAN)可以生成带标签的样本数据
标签平滑:目标变量通常是一个one-hot向量,即当处于正确分类时结果为1,否则结果是0。标签平滑改变了目标向量的最小值,使它为ε。因此,当模型进行分类时,其结果不再仅是1或0,而是我们所要求的1-ε和ε,标记平滑限制了正确类的logit值,并使得它更接近于其他类的logit值。
BN:使模型具有正则化效果,采用BN算法后可以选择更小的L2正则约束参数,因为BN本身具有提高网络泛化能力的特性。
Dropout以一定的概率随机地 “临时丟弃” 一部分神经元节点,Dropout作用于每份小批量训 练数据,由于其随机丢弃部分神经元的机制,相当于每次迭代都在训练不同结构的神经网络。类比于 Bagging方法。
训练阶段:每个神经元节点需要增加一个概率系数
损失函数 参考
0-1损失函数,绝对值,平方损失函数(MSE),指数损失函数,hinge损失函数,感知损失(perceptron loss)函数,交叉熵损失函数
交叉熵损失函数:本质上也是一种对数似然函数,可用于二分类和多分类任务中
当使用sigmoid作为激活函数的时候,常用交叉熵损失函数而不用均方误差损失函数,因为它可以完美解决平方损失函数权重更新过慢的问题,具有“误差大的时候,权重更新快;误差小的时候,权重更新慢”的良好性质。
而交叉熵中
区别:交叉熵函数使用来描述模型预测值和真实值的差距大小,越大代表越不相近;似然函数的本质就是衡量在某个参数下,整体的估计和真实的情况一样的概率,越大代表越相近。
联系:交叉熵函数可以由最大似然函数在伯努利分布的条件下推导出来,或者说最小化交叉熵函数的本质就是对数似然函数的最大化。
概率图模型
两类:贝叶斯网络(有向图)和马尔科夫网络(无向图),包括朴素贝叶斯模型、最大熵模型、隐马尔科夫模型、条件随机场、主题模型等。
ChatGPT演进史
GPT1-GPT2-GPT3-InstructorGPT-ChatGPT
初代GPT:
采用了12层的Transformer Decoder结构,用了大约5GB的无监督文本数据进行语言模型任务的训练;生成式的预训练,具体来说是无监督预训练+下游任务微调
GPT-2:
48层Transformer结构
GPT-3:
1750亿参数量;发现小样本(few-shot)学习的能力。后来的研究表明,这种能力是巨型模型所特有的,被业内叫做「在上下文中学习」(in context learning)的能力。GTP-3并不是采用对话的形式交互的模型,而是一个文本的续写模型(也就是在你输入的文字后面接着往下写)
CodeX,让计算机自己写代码
InstructGPT:解决胡说八道的问题。生成模型的输出内容是自然语言本身,而不是一个分类的标签或一个实体名词这种有明确的、客观对错的内容。没有明确的对错,就导致无法像训练经典的NLP模型那样直接针对目标设计训练任务。
两个阶段:第一阶段-有监督学习(Step 1)。第二阶段-强化学习。根据不同的Prompt生成多个不同的回答,并由人来给这些回答按照好与差的标准来排序。然后用这些标注了优劣之分的数据训练一个打分模型,让它可以自动给更多的数据进行排序打分。强化学习阶段的第二步(对应上图中右边的Step 3)就是利用这个打分模型作为强化学习中的环境反馈,以策略梯度(Policy Gradient,准确地说是PPO算法)的方式对已经「规训」过后的GPT模型进行训练。
GPT-3.5:ChatGPT的诞生的前奏
ChatGPT:
第 1 步:有监督微调(SFT)模型。模型会对用户提示生成出更一致的响应。
第 2 步:奖励模型。输入是一系列提示和响应,输出是一个标量值,叫做奖励(reward)
第 3 步:强化学习模型
(BERT:特征提取式预训练)