学习链接:https://datawhaler.feishu.cn/wiki/MnKxwiOJ9iW54ykHKORcLLY3nkf
参考资料:《深度学习详解》
内容小结:介绍了机器学习的线性模型、Sigmod函数、ReLU函数、深度学习的概念、一般术语。
拟合模型
线性模型
![y=b+\sum ^{k}_{j=1} w_jx_j=b+\mathbf{w\cdot x}](https://latex.csdn.net/eq?y%3Db+%5Csum%20%5E%7Bk%7D_%7Bj%3D1%7D%20w_jx_j%3Db+%5Cmathbf%7Bw%5Ccdot%20x%7D)
k为模型特征数量,b为模型偏置(bias)。是一维向量,存着各个维度特征对应的斜率。将输入的特征x乘上一个权重,再加上偏置就得到了预测结果,这就是线性模型(linear model)。下面从这个最简单的模型出发
分段线性曲线
线性模型过于简单,实际上预测结果与特征的关系可能是复杂的曲线关系。我们可以用折线来逼近曲线,从而更可靠的预测结果。如下图所示:
因此问题转化为怎么表示分段曲线。可以用多段线性模型(Hard Sigmod)叠加得到分段折线。
Hard Sigmod函数
Hard Sigmod是一种两边平中间折线的分段函数。具体表达式可以写为:
Sigmod函数
表达式为:
Sigmod函数可以用来逼近Hard Sigmod函数。
ReLU函数
ReLU(Rectified Linear Unit),即修正线性单元。表达式为:。
分两段,一段平的曲线,末端是向上或向下延伸。用两个ReLU函数可以组成一个Hard Sigmod函数。如下图所示:
深度学习
网络节点
那么对于输入特征x,我们可以得到对应的一个sigmod变换为:。这个sigmod对于特定的输入,可以得到一个输出y。那我们可以定义多个sigmod结点(这就是神经网络中的节点),最终的预测结果可以是多个sigmod的加权叠加:
其中是各个sigmod的权重,b是预测结果的偏置。在这个预测里面,有众多的未知数,如c,w,各个sigmod函数的偏置bi和总偏置b。可以直接把他们按固定顺序排列成一维向量
:
这样对于特定的样本,对应的预测结果只和模型对应的以及样本本身特征有关,可以记为
。当然训练样本确定时,对应的单个样本损失只和具体模型对应参数向量的
有关。可以将单个样本损失记为
,i代表第i个样本。接下来只需要做梯度下降减少Loss即可。
实施细节
批量化(batch)是常用的操作。就是把所有的N个训练样本等分为B个样本一组的k个组。做梯度下降时,每次计算损失时,只计算第i批B个样本的损失,将N个样本的损失记为
。当B足够大时,就有
。分批进行梯度下降的优势是:计算量少,可以全挪进内存计算,同时可以采用分布式计算加速。分批量梯度下降的示意图如下:
神经网络
可以用Sigmod或ReLU函数逼近Hard Sigmod函数,这种逼近函数叫做激活函数(activation function)。每个激活函数对应一个神经网络节点,即神经元(neuron)。每个神经元产生下一层网络的输入特征。如下图所示(从右往左看):
上图的每一竖排对应一层网络,深度学习的神经网络会叠到几百层。深度学习的训练会用到反向传播(BackPropagation, BP)。