深度学习初识
深度学习入门
神经网络的起源和功能
神经网络是仿生学产物,模拟人的神经元工作.主要功能是分类识别,包括图像,语音,文本的分类识别.其中图像,语音是密集型矩阵;文本是稀疏型矩阵.
神经网络的基本概念
网络结构
神经网络的网络结构主要由输入层,隐含层,输出层组成.相对于隐含层单层维度上的增长,隐含层深度的增长对网络能力由更显著的升.通常会把问题分解,当对网络层数增加的时候就增加一个或多个理解力.
digraph G {
输入层 -> 隐含层
隐含层 -> 输出层
}
单个神经元的的结构
单个神经元中包含一个线性函数$z=W^Tx+b$和激励函数$a=g(z)$.其中$z=W^Tx+b$相当于是线性值输入大脑的值,$a=g(z)$是大脑真实记住的值.
激励函数
激励函数能提供规模化的非线性能力,对大脑神经元活动的模拟,常用激励函数有
函数名称 | 函数表达式 | 函数缺点 | 函数优点 |
---|---|---|---|
sigmoid | $f(x)=\frac{1}{1+e^{-x}}$ | 中心点是(0.5,0.5),$x$过大或过小时不敏感 | 全局可导 |
tanh | $f(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}}$ | $x$过大或过小时不敏感 | 中心点是(0,0),全局可导 |
ReLU | $f(x)=\max(0,x)$ | $x<0$时为0,建议可以取较小的斜率进行优化 | 目前应用最广泛 |
逻辑回归
逻辑回归可以看成是一种最简单的网络结构.神经网络中只包含一个隐含层隐含层中只包含一个神经元.逻辑回归就是激活函数$g(z)$不断趋近于$y$的过程
损失函数
损失函数表示样本真实值和训练所得值之间的差异.单次训练的损失函数表达式如下: $$ L(y^{(i)},y_1^{(i)})=-(y^{(i)}\log(y_1^{(i)}))+(1-y^{(i)})\log(1-y_1^{(i)})$$ 式中$y^{(i)}$是样本标准值,$y_1^{(i)}$是训练所得值.在这里损失函数没用使用欧几里得距离,如果使用欧几里得距离作为损失函数时所得的损失函数平面不一定是凸平面,梯度下降的效果和损失函数平面是否是图平面有关.如果有多个最小值会使学习结果不是最优的$L(y^{(i)},y_1^{(i)})$损失函数的平面是一个凸平面. 全部训练损失的表达式如下: $$J(w,b)=\frac{1}{m}\sum_{i=1}^mL(y^{(i)},y_1^{(i)})$$
梯度下降
通过训练调整函数的形态.$a=g(z)$激活函数在训练之前确定,训练过程就是对$y=W^Tx+b$式中W和b调整使其不断精确的的过程.具体过程为通过正向的运算得到$y_1^{(i)}$,根据$L(y^{(i)},y_1^{(i)})$损失函数计算损失.通过损失函数对W和b进行求导,使$L(y^{(i)},y_1^{(i)})$的值趋向于一个最小值,此时W和b的值的值为最优值. $$W:=W-\alpha\frac{dJ(W,b)}{dW}$$ $$b:=b-\alpha\frac{dJ(W,b)}{db}$$ := 的意思是同步更新 其中$\alpha$为学习速率,当$\alpha$过大的时候可能会导致越过$L(y^{(i)},y_1^{(i)})$的最小值,当$\alpha$过小的时候会导致学习速度过慢.
网络的向量化
网络的向前传播的向量化.以下单个隐含层神经网络为例 $$ \left[ \begin{matrix} x_1 \ x_2 \ x_3 \end{matrix} \right] - (W_{2\times4}^{(1)},b_{4\times1}^{(1)})-> \left[ \begin{matrix} a_1 \ a_2 \ a_3 \ a_4 \end{matrix} \right] - (W_{4\times1}^{(2)},b_{1\times1}^{(2)}) -> \left[ \begin{matrix} a^{(2)} \end{matrix} \right] -> y $$ 进行推导 $$ a^{(1)}=g(W^{(1)T}x+b^{(1)}) $$ $$ y=a^{(2)}=g(W^{(2)T}+b^{(2)}) $$ 可归纳出以下公式: $$ a^{(n)}=g(W^{(n)T}{a}^{(n-1)}+b^{(n)})<==>z^{(n)}=W^{(n)T}{a}^{(n-1)}+b^{(n)},a^{(n)}=g(z^{(n)}) $$
网络的梯度下降过程
通过反向传播逆向的调整W和b,从输出层到倒数第二层进行调教,输入层不需要调校.反向传播的推导公式如下: $$ dz^{(n)}=da^{(n)}g^{`}(z^{(n)}) $$ $$ dW^{(n)}=dz^{(n)}a^{(n-1)} $$ $$ db^{(n)}=dz^{(n)} $$ $$ da^{(n-1)}=W^{(n)T}dz^{(n)} $$
网络训练的过程
网络训练的过程就是使用网络向量化公式进行训练,然后进行反向传播.单次训练就是所有层训练完成,然后进行从输出层到输入层进行反向传播对各层的$W$和$b$进行校
- 原文作者:lsy
- 原文链接:http://kklt1996.gitee.io/blog/post/deeplearning_helloword/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。