标签:plsa 间隔 几何 梯度 网络学习 信息 learning 向量 阶段
百面机器学习是一本记录面试问题的书,一方面,学习里面的问题和解答有助于我们更好的掌握机器学习,另一方面,以目录为索引,可以扩展我们的知识面,掌握应届生从事机器学习必备的技能。下面以章节为单位,记录书本的大纲内容。
对数值类型的特征做归一化可以将所有特征统一到一个大致相同的区间,加快梯度下降更新速度。最常用的有:线性函数归一化(Min-Max Scaling)(将原始数据映射到[0,1]的范围)以及零均值归一化(Z-Score Normalizaation)(将原始数据映射到均值为0、标准差为1的分布上)。
1、在分类、聚类算法中,需要使用距离来度量相似性的时候、或者使用PCA技术进行降维的时候,第二种方法(Z-score standardization)表现更好。
2、在不涉及距离度量、协方差计算、数据不符合正太分布的时候,可以使用第一种方法或其他归一化方法。比如图像处理中,将RGB图像转换为灰度图像后将其值限定在[0 255]的范围。
序号编码、独热编码、二进制编码
为了提高复杂关系的拟合能力,在特征工程中经常会把一阶离散特征两两组合,构成高阶组合特征。
基于决策树的特征组合寻找方法。
Word2Vec有两种网络结构。CBOW(Continues Bag of Words)的目标是根据上下文出现的词语来预测当前词的生成概率;Skip-gram是根据当前词来预测上下文中个词的生成概率。CBOW对小型数据库比较合适,而Skip-Gram在大型语料中表现更好。
word2Vec与LDA的区别和联系。 LDA是利用文档中单词的共现关系来对单词按主题聚类,即对‘文档-单词’矩阵进行分解,而word2Vec是对‘上下文-单词’矩阵进行学习,由此得到的词向量更多融入了上下文共现的特征。 需要注意,上述分析的LDA和Word2Vec的不同,不是主题模型和词嵌入两种方法的主要差异。其主要差异在于其模型本身,主题模型是一种基于概率图模型的生成式模型,其似然函数可以写成若干条件概率连乘的形式;而词嵌入一般表达为神经网络的形式,似然函数定义在网络输出之上,需要通过学习网络权重来得到单词的稠密向量表示。
当训练数据不足,主要表现为过拟合。缓解方法是加入更多的先验信息,主要在两方面:一、基于模型的方法,包括简化模型、添加正则项以缩小假设空间、集成学习、Dropout超参数;二、基于数据的方法,主要通过数据扩充(Data Augmentation),例如图像增强、SMOTE算法、生成式对抗网络模型、迁移学习等。
当不同类别的样本比率非常不均衡时,占比大的类别往往成为影响准确率的最主要因素。并且可能存在模型过拟合或者欠拟合、测试集和训练集划分不合理、线下评估与线上测试的样本分布存在差异等问题。
精确率是指分类正确的正样本个数占分类器判定为正样本的样本个数的比例。召回率是指分类正确的正样本个数占真正的正样本个数的比率。
模型P-R曲线,横轴是召回率,纵轴是精确率,对于一个排序模型来说,其P-R曲线上的一个点代表着,在某一阈值下,模型将大于该阈值的结果判定为正样本,小于该阈值的结果判定为负样本,此时对应的精确率和召回率。整体P-R曲线是通过将阈值从高到低移动而生成的。
F1 = 2PR/(P+R)
TP: 将正类预测为正类数 40
FN: 将正类预测为负类数 20
FP: 将负类预测为正类数 10
TN: 将负类预测为负类数 30
准确率(accuracy) = 预测对的/所有 = (TP+TN)/(TP+FN+FP+TN)
精确率(precision) = TP/(TP+FP)
召回率(recall) = TP/(TP+FN)
RMSE计算公式为:
RMSE=\sqrt{ \frac{(y-\hat y)^2}{n}}
在实际问题中,如果存在个别偏离程度非常大的离群点时,即使离群点数量非常少,也会让RMSE指标变得很差。
思考这个问题有三个方面:第一,如果我们认为这些离群点是噪声点的话,就需要在数据预处理的阶段把这些噪声过滤掉;第二,如果不认为是噪声点,就需要进一步提高模型的预测能力,将离群点产生的机制建模进去;第三,可以找一个更合适的指标来评估该模型,例如平均绝对百分比误差(MAPE)(Mean Absolute Percent Error)
ROC(Receiver Operating Characteristic Curve)是‘受试者工作特征曲线’。源于军事领域,而后在医学领域应用甚广。ROC曲线横坐标为假阳性率(FPR);纵坐标为真阳性率(TPR)。
FPR = FP/N
TPR = TP/P
通过不断移动分类器的‘截断点’来生成曲线上的一组关键点。具体而言,通过动态地调整截断点,从最高的得分开始,逐渐调整到最低得分,每一个截断点对应一个FPR和TPR,在ROC图上绘制出每个截断点对应的位置,再连接所有点就得到最终的ROC曲线。
还有一种更直观地绘制ROC曲线的方法,首先,根据样本标签统计出正负样本数量,假设正样本数量为P,负样本数量为N;将横轴的刻度间隔设置为1/N,纵轴的刻度间隔设置为1/P;根据模型输出的预测概率对样本进行排序(从高到低);依次遍历样本,同时从零点开始绘制ROC曲线,每遇到一个正样本就沿纵轴方向绘制一个刻度间隔的曲线,每遇到一个负样本就沿横轴绘制一个刻度间隔的曲线,直至遍历所有样本,最终到(1,1)点。
AUC指的是ROC曲线下的面积大小,能够量化地反映基于ROC曲线衡量出的模型性能。计算AUC值只需要沿着ROC横轴做积分就可以了。
相比P-R曲线,ROC曲线有一个特点,当正负样本的分布发生变化时,ROC曲线的形状能够基本保持不变,而P-R曲线的形状一般会发生较剧烈的变化。
所以,ROC曲线能够尽量降低不同测试集带来的干扰,更加客观地衡量模型本身的性能。但还是因实际问题而异的,如果研究者希望更多地看到模型在特定数据集上的表现,P-R曲线则能更直观地反映其性能。
对于两个向量A和B,余弦相似度定义为\(cos(A,B)=A*B/(||A||*||B||)\),即两个向量夹角的余弦,关注的是向量之间的角度关系,并不关心它们的绝对大小,其取值范围是[-1,1]。当一对文本长度差距很大、但内容相近时,如果使用词频或词向量作为特征,它们在特征空间中的欧氏距离通常很大;而如果使用余弦相似度,它们之间的夹角就可能很小,因而相似度高。此外,在文本、图像、视频等领域,研究的对象的特征维度往往很高,余弦相似度在高维情况下仍然保持‘相同时为1,正交时为0,相反时为-1’的性质,而欧氏距离则受维度的影响,范围不固定,并且含义也比较模糊。总体来说,欧式距离体现数值上的绝对差异,而余弦距离体现方向上的相对差异。
距离的定义:在一个集合中,如果每一对元素均可唯一确定一个实数,使得 三条距离公式(正定性,对称性,三角不等式) 成立,则该实数可称为这对元素之间的距离。
余弦距离满足正定性和对称性,但是不满足三角不等式,因此并不是严格定义的距离。
KL距离(相对熵,Kullback-Leibler DiverGence),常用于两个分布之间的差异,但不满足对称性和三角不等式。
1、离线评估无法完全消除模型过拟合的影响;
2、离线评估无法完全还原线上的工程环境,例如线上环境的延迟、数据丢失、标签数据缺失等情况。因此离线评估的结果是理想工程环境下的结果;
3、线上系统的某些商业指标在离线评估中无法计算。例如推荐算法带来的用户点击率、留存时长、PV访问量等的变化。
主要通过用户分桶,即将用户分成实验组和对照组,对实验组的用户用新模型,对对照组的用户用旧模型。在分桶的过程中,要注意样本的独立性和采样方式的无偏性,确保同一用户每次只能分到同一桶中。
将所有美国用户根据user_id个位数划分为实验组和对照组,分别用模型A和B,才能验证模型A的效果。
1/e = 36.8%
过拟合:在训练集上表现很好,但在测试集和新数据上表现较差。
欠拟合:在训练和预测时表现都不好。
参考机器学习经典算法
对于任何线性可分的两组点,它们在SVM分类的超平面上的投影都是线性不可分的。
首先,逻辑回归处理的是分类问题,线性回归处理的是回归问题。二者都使用了极大似然估计来对训练样本进行建模。线性回归使用最小二乘法,实际上是在自变量x与超参数确定,因变量y服从正态分布的假设下,使用极大似然估计的一个化简;而逻辑回归中通过对似然函数\(L(θ)\)的学习,得到最佳参数。另外,二者在求解超参数的过程中,都可以使用梯度下降的方法。
取决于具体问题的定义。首先,如果一个样本只对应于一个标签,我们可以假设每个样本属于不同标签的概率服从几何分布,使用多项逻辑回归(softmax regression)来进行分类。
当存在样本可能属于多个标签的情况时,我们可以训练k个二分类的逻辑回归分类器。第i个分类器用以区分每个样本是否可以归为第i类。
参考决策树模型
PCA可以找到数据中的主成分,并利用这些主成分表征原始数据,从而达到降维的目的。
PCA目标是最大化投影方差,也就是让数据在主轴上投影的方差最大。
LDA的中心思想-最大化类间距离和最小化类内距离。最终转化为一个求矩阵特征向量的问题。
从目标出发,PCA选择的是投影后数据方差最大的方向,LDA选择的是投影后类内方差小、类间方差大的方向,用到了类别信息。从应用的角度出发,对无监督的一般使用PCA,有监督的则应用LDA
K均值算法实际上是一种最大期望算法(EM)。在E步骤中,等同于K均值算法中对于每一个点x找到当前最近的簇z。
M步骤,等同于找到最优的中心点。
高斯混合模型(GMM)的核心思想是,假设数据可以看作从多个高斯分布中生成出来的。在该假设下,我们需要寻找每个单独的分模型的均值、方差以及权重。 采用EM算法框架来求解该优化问题。EM算法是在最大化目标函数时,先固定一个变量使整体函数变成凸优化函数,求导得到最值,然后利用最优参数更新被固定的变量,进入下一循环。具体到高斯混合模型的求解,EM算法的迭代过程如下:
首先,初始随机选择各参数的值。然后,重复下面两步,直到收敛:
(1)E步骤,根据当前参数,计算每个点由分模型生成的概率
(2)M步骤,使用E步骤估计出的概率,来改进每个分模型的均值,方差和权重。
高斯混合模型与K均值算法相同点:
1.都是可用于聚类的算法
2.都需要指定K值
3.都是使用EM算法来求解
4.都往往只能收敛于局部最优
不同点:
1.混合高斯模型可以给出一个样本属于某类的概率是多少
2.不仅仅可以用于聚类,还可以用于概率密度的估计
3.可以用于生成新的样本点
自组织映射神经网络(SOM)本质上是一个两层的神经网络,包含输入层与输出层
设计学习率
生成式模型是由数据学习联合概率分布P(X,Y),然后求出条件概率分布P(Y|X)作为预测的模型
典型的生成式模型有:朴素贝叶斯、贝叶斯网络、pLSA、LDA、隐马尔科夫模型
判别式模型是由数据直接学习决策函数f(X)或者条件概率分布P(Y|X)作为预测的模型
典型的判别式模型有:最大熵模型、条件随机场
隐马尔科夫模型通常用来解决序列标注问题,因此也可以将分词问题转化为一个序列标注问题来进行建模。例如,可以对中文句子中每个字做以下标注,B表示一个词开头的第一个字,E表示一个词结尾的最后一个字,M表示一个词中间的字,S表示一个单字词,则隐状态的取值空间为{B,E,M,S}。同时对隐状态的转移概率可以给出一些先验知识,B和M后面只能是M或者E,S和E后面只能是B或者S。而每个字就是模型中的观测状态,取值空间为预料中的所有中文字。完成建模之后,使用语料进行训练可以分为有监督训练和无监督训练。
由于局部归一化的影响,隐状态会倾向于转移到后续状态可能更少的状态上,以提高整体的后验概率。这就是标注偏置问题。
可以使用条件随机场(CRF),进行全局归一化。
基于词袋模型或N-gram模型的文本表示模型有一个明显的缺陷,无法识别出两个不同的词或词组具有相同的主题。因此,可以通过主题模型将具有相同主题的词或词组映射到同一维度上。
主题模型是用来在大量文档中发现潜在主题的一种统计模型。
常用评估指标为困惑度(perplexity),在文档集合D上,模型的困惑度被定义为:
perplexity(D)=\exp{\{ -\frac{\sum_{d=1}^M \log p(w_d)}{\sum_{d=1}^M N_d} \}}
其中,M为文档的总数,\(w_d\)为文档d中单词所组成的词袋向量,\(p(w_d)\)是模型所预测的文档d的生成概率,\(N_d\)是文档d中单词的总数。
在实践中,一般选择合理范围内困惑度的下降明显变慢(拐点)的时候。
推荐系统中的冷启动问题,是指没有大量用户数据的情况下如何给用户进行个性化推荐,目的是最优化点击率、转化率或用户体验。冷启动问题一般分为用户冷启动、物品冷启动和系统冷启动三大类。
解决冷启动问题的方法一般是基于内容的推荐。对于用户冷启动,可以根据用户的注册信息,得到用户的兴趣主题,找到与该用户兴趣相同的其他用户,通过他们的历史行为来预测用户的兴趣。对于物品冷启动,可以根据电影的导演、演员等信息推测电影所属于的主题,如何基于主题向量找到相似的电影,并将新电影推荐给以往喜欢看这些相似电影的用户。
解决系统冷启动,首先可以得到每个用户和电影对应的主题向量。当系统没有任何数据时,我们需要一些先验知识来指定,并且由于主题的数目通常比较小,随着系统的上限,收集到少量的数据之后我们就可以对主题之间的偏好程度得到一个比较准确的估计。
常用的损失函数:
常用的代价函数:
均方误差(Mean Squared Error)
\[
MSE=\frac{1}{m}\sum_{i=1}^m (y_i-\hat y_i)^2
\]
平均绝对误差(Mean Absolute Error)
\[
MAE=\frac{1}{m}\sum_{i=1}^m |y_i-\hat y_i|
\]
均方根误差
\[
RMSE=\sqrt{\frac{1}{m}\sum_{i=1}^m (y_i-\hat y_i)^2}
\]
交叉熵代价函数(Cross Entry)
\[
L(w,b)=-\frac{1}{N}\sum_{i=1}^m (y_i \log {f(x_i)}+(1-y_i) \log {(1-f(x_i)}))
\]
凸优化问题包括支持向量机、线性回归、逻辑回归等线性模型,非凸优化问题包括低秩模型(如矩阵分解)、深度神经网络模型等。
经典的优化算法可以分为直接法和迭代法两大类。
直接法,就是能够直接给出优化问题最优解的方法。它要求目标函数满足两个条件,L()是凸函数,且有闭式解。以线性回归为例
线性回归中,其代价函数为:
\[
J(\theta)=\frac{1}{2} \sum_{i=1}^m (h_\theta(x^{(i)})-y^{(i)})^2
\]
使用矩阵对损失函数求导,有:
\[
\begin{aligned}
L(w) = & \frac{1}{2} (XW-y)^T(XW-y) \=& \frac{1}{2} (W^TX^TXW-W^TX^Ty-y^TXW+y^Ty) \=& \frac{1}{2} (W^TX^TXW-2W^TX^Ty+y^Ty)
\end{aligned}
\]
则,
\[
\frac{\partial L(w)}{\partial w}=\frac{1}{2}[W^TX^TX-2X^Ty]=0
\]
\[
X^TXW=X^Ty
\]
得
\[
W=(X^TX)^{-1}X^Ty
\]
迭代法又分为一阶法和二阶法两类。一阶法对函数做一阶泰勒展开;又称梯度下降法;
二阶法做二阶泰勒展开;又称牛顿法。二阶法收敛速度快,但在高维情况下,海森矩阵求逆的计算复杂度很大,而且当目标为非凸时,可能会收敛到鞍点。
可以做梯度验证。
经典的梯度下降法在每次对模型参数进行更新时,需要遍历所有的训练数据。当M很大时,这需要很大的计算量,耗费很长的计算时间。可采用随机梯度下降法或者小批量梯度下降法。随机梯度下降法是使用单个数据对模型参数进行更新,大大加快了收敛速率,也适用于在线更新的场景。小批量梯度下降法是同时使若干个训练数据。有三点需要注意的地方:
1)如何选取参数m?一般通过调参。取m为2的幂次,充分利用矩阵运算操作。
2)如何挑选m个训练数据?需要先对所有的数据进行随机排序
3)如何选取学习速率a?为了加快收敛速率,同时提高求解精度,通常会采用衰减学习速率的方案:一开始算法采用较大的学习速率,当误差曲线进入平台期后,减小学习速率做更精细的调整。
因为随机梯度下降每步仅仅随机采样一个(或少量)样本来估计当前梯度,计算速度快,内存开销小。但由于每步接受的信息量有限,随机梯度下降达对梯度的估计常常出现偏差,造成目标函数曲线收敛得很不稳定,伴有剧烈波动,有时甚至出现不收敛的情况。对随机梯度下降来说,如何徘徊在山谷和鞍点。其中,在山谷中,准确的梯度方向是沿着山道向下,稍有偏离就会撞向山壁,而粗糙的梯度估计使得它在两山壁间来回反弹震荡,不能沿山道方向迅速下降,导致收敛不稳定和收敛速度慢。在鞍点处,随机梯度下降法会进入一片平坦的地方(plateau),梯度几乎为零,随机梯度下降法无法准确察觉出梯度的微小变化,造成停滞。
事实上,带正则项与带约束条件是等价的。为了约束w的可能取值空间从而防止过拟合,我们为最优化问题加上一个约束,就是w的L2范数的平方不能大于m:
\[
\begin{cases}
\min \sum_{i=1}^N {(y_i-w^Tx_i)^2} \s.t. ||w||^2 \leq m
\end{cases}
\]
L2正则化相当于为参数定义了一个圆形的解空间(因为必须保证L2范数不能大于m),而L1正则化相当于为参数定义了一个菱形的解空间。
我们令黄色部分是L2和L1正则约束后的解空间,等高线是凸优化问题中目标函数的等高线,可知L1正则化多边形的解空间更容易在尖角处与等高线碰撞出稀疏解。
采样本质是对随机现象的模拟,根据给定的概率分布,来模型产生一个对应的随机事件。
采用线性同余法,生成离散均匀分布伪随机数,计算公式为:
\[
x_{t+1} = a*x_t+c( mod \ m)
\]
可得到【0,m-1】上的随机整数。除以m可得0-1区间上的连续随机数。
MCMC采样的基本思想是:针对待采样的目标分布,构造一个马尔可夫链,使得该马尔科夫链的平稳分布就是目标分布;然后,从任何一个初始状态出发,沿着马尔科夫链进行状态转移,最终得到的状态转移序列会收敛到目标分布,由此可以得到目标分布的一系列样本。
可以运行多条马尔科夫链,这样不同链上的样本是独立的;
或者在同一天马尔科夫链上每隔若干个样本才取一个,这样就是近似独立的。
sigmoid激活曲线可以看出:当z很大时,f(z)趋近于1;当z很小时,f(z)趋近于0。其导数在z很大或很小都会趋近于0,造成梯度消失的现象。
sigmoid激活曲线可以看出:当z很大时,f(z)趋近于1;当z很小时,f(z)趋近于-1。其导数在z很大或很小都会趋近于0,造成梯度消失的现象。实际上,tanh激活函数相当于sigmoid的平移。
优点:
从计算上,sigmoid和tanh激活函数均需要计算指数,复杂度高,而Relu只需要一个阈值就可以得到激活值。
relu的非饱和性可以有效地解决梯度消失的问题,提供相对宽的激活边界。
relu的单侧拟制提供了网络的稀疏表达能力。
局限性:
其训练过程中会导致神经元死亡的问题。这是由于relu函数导致负梯度在经过该relu单元时被置为0,且在之后也不被任何数据激活,导致梯度永远为0。在实际训练中,如果学习率设置过大,会导致一定比率的神经元不可逆死亡,进而参数梯度无法更新,整个训练过程失败。
所以,有relu的变种Leaky Relu,既实现了单侧拟制,又保留了部分负梯度信息以致不完全丢失,但另一方面,a值的选择增加了问题难度,又有参数化的PReLU,LReLU,Random ReLU等。
梯度反向传播不是只和激活函数有关
多层感知机中,输入信号通过各个网络层的隐节点产生输出的过程称为前向传播。我们定义低(l)层的输入为\(x^{(l)}\),输出为\(a^{(l)}\);在每一层中\(z^{(l)}=w^{(l)}x^{(l)}+b^{(l)}\),,然后利用激活函数\(f\)得到\(a^{(l)}=f(z^{(l)})\);\(a^{(l)}\)直接作为下一层输入,即\(x^{(l+1)}\)。设\(z^{(l)}\)和\(a^{(l)}\)为\(s_l\)的向量,则\(W_l\)为\(s_l*s_{l+1}\)维的矩阵。
平方误差的整体代价函数为:
\[
J(W,b)=[\frac{1}{m}\sum_{i=1}^m J(W,b;x^{(i)},y^{(i)})]+\frac{\lambda}{2} \sum_{l=1}^N \sum_{i=1}^{S_{l-1}} \sum_{j=1}^{S_l}(W_{ji}^{(l)})^2 \=[\frac{1}{m}\sum_{i=1}^m \frac{1}{2}||y^{(i)}-o^{(i)}||^2]+\frac{\lambda}{2} \sum_{l=1}^N \sum_{i=1}^{S_{l-1}} \sum_{j=1}^{S_l}(W_{ji}^{(l)})^2
\]
在二分类中,交叉熵的整体代价函数为:
\[
J(W,b)=[\frac{1}{m}\sum_{i=1}^m J(W,b;x^{(i)},y^{(i)})]+\frac{\lambda}{2} \sum_{l=1}^N \sum_{i=1}^{S_{l-1}} \sum_{j=1}^{S_l}(W_{ji}^{(l)})^2 \=-[\frac{1}{m}\sum_{i=1}^m {y^{(i)}\ln o^{(i)} + (1-y^{(i)}) \ln (1-o^{(i)}})]+\frac{\lambda}{2} \sum_{l=1}^N \sum_{i=1}^{S_{l-1}} \sum_{j=1}^{S_l}(W_{ji}^{(l)})^2
\]
在多分类下,
\[
J(W,b)=-[\frac{1}{m}\sum_{i=1}^m \sum_{k=1}^n y_k^{(i)} \ln o_k^{(i)}]+\frac{\lambda}{2} \sum_{l=1}^N \sum_{i=1}^{S_{l-1}} \sum_{j=1}^{S_l}(W_{ji}^{(l)})^2
\]
梯度下降法中每次迭代对参数\(W\)(网络连接权重)和\(b\)(偏置)进行更新:
\[
W_{ji}^{(l)}=W_{ji}^{(l)}-\alpha \frac{\partial}{\partial W_{ji}^{(l)}}J(w,b) \b_{j}^{(l)}=b_{j}^{(l)}-\alpha \frac{\partial}{\partial b_{j}^{(l)}}J(w,b)
\]
其中,\(\alpha\)为学习率。
其中:
\[
\frac{\partial}{\partial W_{ji}^{(l)}}J(w,b) = \frac{\partial J(w,b)}{\partial z_{j}^{(l)}} \frac{\partial z_{j}^{(l)}}{\partial W_{ji}^{(l)}}
\]
先计算损失函数对隐含层的偏导
\[
\frac{\partial J(w,b)}{\partial z_{j}^{(l)}}=\sum_{k=1}^{S_{l+1}} (\frac{\partial J(w,b)}{\partial z_{k}^{(l+1)}} \frac{\partial z_{k}^{(l+1)}}{\partial z_{j}^{(l)}})
\]
\[
\frac{\partial z_{k}^{(l+1)}}{\partial z_{j}^{(l)}} = \frac{\partial (\sum_{j=1}^{S_l}(W_{kj}^{(l+1)} x_j^{(l+1)}+b_k^{(l+1)}))}{\partial z_{j}^{(l)}}
\]
其中\(b_k^{(l+1)}\)与\(z_j^{(l)}\)无关可以省去,\(x^{(l+1)}=a^{(l)}=f(z^{(l)})\),因此
\[
\frac{\partial z_{k}^{(l+1)}}{\partial z_{j}^{(l)}} = W_{kj}^{(l+1)} f'(z_{j}^{(l)})
\]
\(\frac{\partial J(w,b)}{\partial z_{j}^{(l)}}\)可以看做损失函数在第l层第i个节点产生的残差量,记为\(\delta_{j}^{(l)}\),从而递推公式可以表示为:
\[
\delta_{j}^{(l)}=(\sum_{k=1}^{S_{l+1}} W_{kj}^{(l+1)} \delta_{k}^{(l+1)}) f'(z_{j}^{(l)})
\]
损失对参数函数的梯度可以写为:
\[
\frac{\partial}{\partial W_{ji}^{(l)}}J(W,b) = \frac{\partial J(w,b)}{\partial z_{j}^{(l)}} \frac{\partial z_{j}^{(l)}}{\partial W_{ji}^{(l)}} = \delta_{j}^{(l)} x_i^{(l)} a_i^{(l-1)}
\]
\[
\frac{\partial}{\partial b_{j}^{(l)}}J(W,b) = \delta_{j}^{(l)}
\]
下面针对不同的损失函数计算最后一层的残差\(\delta^{(L)}\);得到\(\delta^{(L)}\)之后其他层的残差可以根据递推公式计算。
平方误差损失:
\[
J(W,b)=\frac{1}{2}||y^{(i)}-o^{(i)}||^2 \\delta^{(L)} = -(y-a^{(L)})f'(z^{(L)})
\]
交叉熵损失:
\[
J(W,b)=- \sum_{k=1}^{n}y_k \ln o_k^{(L)} \\delta^{(L)} = a_k^{(L)}-y_k
\]
一般来说,平方损失函数更适合输出为连续,并且最后一层不含Sigmoid或Softmax激活函数的神经网络;交叉熵损失则更适合二分类或多分类的场景。
因为平方损失函数相对于输出层的导数为:
\[
\delta^{(L)} = -(y-a^{(L)})f'(z^{(L)})
\]
当激活函数为sigmoid时,如果z的绝对值较大,函数的梯度会趋于饱和,即导数绝对值非常小,导致残差也小,使得基于梯度的学习速度非常缓慢。当使用交叉熵损失函数时,相对于输出层的导数(残差)为
\[
\delta^{(L)} = a_k^{(L)}-y_k
\]
此时的导数是线性的,因此不会存在学习速度过慢的问题。
卷积神经网络的核心思想是捕捉局部特征,能够自动地对N-gram特征进行组合和筛选,获得不同抽象层次的语义信息。
卷积神经网络有输入层、卷积层、池化层、输出层。
(1)输入层是一个NxK的矩阵,其中N为文章所对应的单词总数,K是每个词对应的表示向量的维度。每个词的K维向量可以是预先在其他语料库中训练好的,也可以作为未知的参数有网络训练得到。这两种方法各有优势,一方面,预先训练的词嵌入可以利用其他语料库得到更多的先验知识;另一方面,由当前网络训练的词向量能够更好地抓住与当前任务相关联的特征。
(2)第二次维卷积层,定义不同大小的滑动窗口进行卷积操作
(3)第三层为池化层
(4)接入一个全连接层,使用softmax激活函数输出每个类别的概率。
ResNet的提出背景是解决或缓解生成的神经网络训练中的梯度消失问题。
根据误差传播公式:
\[
\delta_{i}^{(l)}=(\sum_{j=1}^{S_{l+1}} W_{ji}^{(l+1)} \delta_{j}^{(l+1)}) f'(z_{i}^{(l)})
\]
将式再展开一层,可以得到;
\[
\delta_{i}^{(l)}=(\sum_{j=1}^{S_{l+1}} W_{ji}^{(l+1)} (\sum_{k=1}^{S_{l+2}} W_{kj}^{(l+2)} \delta_{k}^{(l+2)} f'(z_{j}^{(l+1)}) ) f'(z_{i}^{(l)})
\]
可以看到误差传播可以写成参数\(W_{ji}^{(l+1)}\)、\(W_{kj}^{(l+2)}\)以及导数\(f'(z_{j}^{(l+1)})\)、\(f'(z_{i}^{(l)})\)连乘的形式,当误差由L层传播到除输入以外的第一个隐含层的时候,会涉及到非常多的参数和导数的连乘,这时候误差很容易产生消失或者膨胀,影响该层参数的正确学习,因此深层神经网络的拟合和泛化能力较差。
ResNet通过调整网络结构来解决上述问题。将输入短接到两层之后,可以直接学习一个恒等映射,可以有效改善深层的神经网络学习问题。
传统文本处理任务的方法中一般讲TF-IDF向量作为特征输入,这样的表示实际上丢失了输入的文本序列中每个单词的顺序。卷积神经网络对文本建模时,输入变长的字符串或者单词串,然后通过滑动窗口加池化的方式将原先的输入转换成一个固定长度的向量表示,这样做可以捕捉到原文本中的一些局部特征,但是两个单词之间的长距离依赖关系还是很难被学习到。
一个长度为T的序列用循环神经网络建模,展开之后可以看做是一个T层的前馈神经网络。其中第t层的隐含状态h(t)编码了序列中前t个输入的信息,可以通过当前的输入x(t)和上一层神经网络状态h(t-1)计算得到;最后一层的状态h(T)编码了整个序列的信息,因此可以作为整篇文档的压缩表示,以此为基础的结构可以应用于多种具体任务。例如,在h(T)后面直接接一个Softmax层,输出文本所属类别的预测概率y,就可以实现文本分类。
标签:plsa 间隔 几何 梯度 网络学习 信息 learning 向量 阶段
原文地址:https://www.cnblogs.com/hellojamest/p/11184135.html