跟新神经网络图片链接
This commit is contained in:
parent
4dee107847
commit
83f23c31de
24
nn/README.md
24
nn/README.md
@ -4,13 +4,13 @@
|
||||
部分,前一部分计算总输入值(即输入信号的加权和,或者说累积电平),后一部分先计算总输入值与该神经元阈值的差值,然后通过
|
||||
激活函数(activation function)的处理,产生输出从轴突传送给其它神经元。M-P神经元模型如下图所示:
|
||||
|
||||
![pic](http://index.zeekling.cn/gogsPics/ml/nn/1.png)<br>
|
||||
![pic](https://img.zeekling.cn/images/2020/04/25/nn_1.png)<br>
|
||||
|
||||
与线性分类十分相似,神经元模型最理想的激活函数也是阶跃函数,即将神经元输入值与阈值的差值映射为输出值1或0,若差值大于零输
|
||||
出1,对应兴奋;若差值小于零则输出0,对应抑制。但阶跃函数不连续,不光滑,故在M-P神经元模型中,也采用Sigmoid函数来近似,
|
||||
Sigmoid函数将较大范围内变化的输入值挤压到 (0,1) 输出值范围内,所以也称为挤压函数(squashing function)。
|
||||
|
||||
![pic](http://index.zeekling.cn/gogsPics/ml/nn/2.png)<br>
|
||||
![pic](https://img.zeekling.cn/images/2020/04/25/nn_2.png)<br>
|
||||
|
||||
将多个神经元按一定的层次结构连接起来,就得到了神经网络。它是一种包含多个参数的模型,比方说10个神经元两两连接,则有100个
|
||||
参数需要学习(每个神经元有9个连接权以及1个阈值),若将每个神经元都看作一个函数,则整个神经网络就是由这些函数相互嵌套而成。
|
||||
@ -26,12 +26,12 @@ Sigmoid函数将较大范围内变化的输入值挤压到 (0,1) 输出值范围
|
||||
即假设有一个固定输入xn+1=-1的输入层神经元,其对应的权重为ωn+1,这样就把权重和阈值统一为权重的学习了。简单感知机的结构如
|
||||
下图所示:
|
||||
|
||||
![pic](http://index.zeekling.cn/gogsPics/ml/nn/3.png)<br>
|
||||
![pic](https://img.zeekling.cn/images/2020/04/25/nn_3.png)<br>
|
||||
|
||||
感知机权重的学习规则如下:对于训练样本(x,y),当该样本进入感知机学习后,会产生一个输出值,若该输出值与样本的真实标记
|
||||
不一致,则感知机会对权重进行调整,若激活函数为阶跃函数,则调整的方法为(基于梯度下降法):(看不懂)
|
||||
|
||||
![pic](http://index.zeekling.cn/gogsPics/ml/nn/4.png)<br>
|
||||
![pic](https://img.zeekling.cn/images/2020/04/25/nn_4.png)<br>
|
||||
|
||||
其中 η∈(0,1)称为学习率,可以看出感知机是通过逐个样本输入来更新权重,首先设定好初始权重(一般为随机),逐个地输入样本
|
||||
数据,若输出值与真实标记相同则继续输入下一个样本,若不一致则更新权重,然后再重新逐个检验,直到每个样本数据的输出值都与真
|
||||
@ -42,7 +42,7 @@ Sigmoid函数将较大范围内变化的输入值挤压到 (0,1) 输出值范围
|
||||
(converge),因此总是可以求出适当的权值。但是对于像书上提到的异或问题,只通过一层功能神经元往往不能解决,因此要解决非线
|
||||
性可分问题,需要考虑使用多层功能神经元,即神经网络。多层神经网络的拓扑结构如下图所示:
|
||||
|
||||
![pic](http://index.zeekling.cn/gogsPics/ml/nn/4.png)<br>
|
||||
![pic](https://img.zeekling.cn/images/2020/04/25/nn_5.png)<br>
|
||||
|
||||
在神经网络中,输入层与输出层之间的层称为隐含层或隐层(hidden layer),隐层和输出层的神经元都是具有激活函数的功能神经元。
|
||||
只需包含一个隐层便可以称为多层神经网络,常用的神经网络称为“多层前馈神经网络”(multi-layer feedforward neural network),
|
||||
@ -52,7 +52,7 @@ Sigmoid函数将较大范围内变化的输入值挤压到 (0,1) 输出值范围
|
||||
* 神经元之间不存在同层连接
|
||||
* 神经元之间不存在跨层连接
|
||||
|
||||
![pic](http://index.zeekling.cn/gogsPics/ml/nn/6.png)<br>
|
||||
![pic](https://img.zeekling.cn/images/2020/04/25/nn_6.png)<br>
|
||||
|
||||
根据上面的特点可以得知:这里的“前馈”指的是网络拓扑结构中不存在环或回路,而不是指该网络只能向前传播而不能向后传播(下节中
|
||||
的BP神经网络正是基于前馈神经网络而增加了反馈调节机制)。神经网络的学习过程就是根据训练数据来调整神经元之间的“连接权”以及
|
||||
@ -63,24 +63,24 @@ Sigmoid函数将较大范围内变化的输入值挤压到 (0,1) 输出值范围
|
||||
一般而言,只需包含一个足够多神经元的隐层,就能以任意精度逼近任意复杂度的连续函数[Hornik et al.,1989],故下面以训练单隐
|
||||
层的前馈神经网络为例,介绍BP神经网络的算法思想。
|
||||
|
||||
![pic](http://index.zeekling.cn/gogsPics/ml/nn/7.png)<br>
|
||||
![pic](https://img.zeekling.cn/images/2020/04/25/nn_7.png)<br>
|
||||
|
||||
上图为一个单隐层前馈神经网络的拓扑结构,BP神经网络算法也使用梯度下降法(gradient descent),以单个样本的均方误差的负梯度
|
||||
方向对权重进行调节。可以看出:BP算法首先将误差反向传播给隐层神经元,调节隐层到输出层的连接权重与输出层神经元的阈值;接着
|
||||
根据隐含层神经元的均方误差,来调节输入层到隐含层的连接权值与隐含层神经元的阈值。BP算法基本的推导过程与感知机的推导过程原
|
||||
理是相同的,下面给出调整隐含层到输出层的权重调整规则的推导过程:
|
||||
|
||||
![pic](http://index.zeekling.cn/gogsPics/ml/nn/8.png)<br>
|
||||
![pic](https://img.zeekling.cn/images/2020/04/25/nn_8.png)<br>
|
||||
|
||||
学习率η∈(0,1)控制着沿反梯度方向下降的步长,若步长太大则下降太快容易产生震荡,若步长太小则收敛速度太慢,一般地常把η设
|
||||
置为0.1,有时更新权重时会将输出层与隐含层设置为不同的学习率。BP算法的基本流程如下所示:
|
||||
|
||||
![pic](http://index.zeekling.cn/gogsPics/ml/nn/9.png)<br>
|
||||
![pic](https://img.zeekling.cn/images/2020/04/25/nn_9.png)<br>
|
||||
|
||||
BP算法的更新规则是基于每个样本的预测值与真实类标的均方误差来进行权值调节,即BP算法每次更新只针对于单个样例。需要注意的是
|
||||
:BP算法的最终目标是要最小化整个训练集D上的累积误差,即:
|
||||
|
||||
![pic](http://index.zeekling.cn/gogsPics/ml/nn/10.png)<br>
|
||||
![pic](https://img.zeekling.cn/images/2020/04/25/nn_10.png)<br>
|
||||
|
||||
如果基于累积误差最小化的更新规则,则得到了累积误差逆传播算法(accumulated error backpropagation),即每次读取全部的数据
|
||||
集一遍,进行一轮学习,从而基于当前的累积误差进行权值调整,因此参数更新的频率相比标准BP算法低了很多,但在很多任务中,尤其
|
||||
@ -92,7 +92,7 @@ BP算法的更新规则是基于每个样本的预测值与真实类标的均方
|
||||
- 引入正则化(regularization):基本思想是在累积误差函数中增加一个用于描述网络复杂度的部分,例如所有权值与阈值的平方和,
|
||||
其中λ∈(0,1)用于对累积经验误差与网络复杂度这两项进行折中,常通过交叉验证法来估计。
|
||||
|
||||
![pic](http://index.zeekling.cn/gogsPics/ml/nn/11.png)<br>
|
||||
![pic](https://img.zeekling.cn/images/2020/04/25/nn_11.png)<br>
|
||||
|
||||
### 全局最小与局部最小
|
||||
模型学习的过程实质上就是一个寻找最优参数的过程,例如BP算法试图通过最速下降来寻找使得累积经验误差最小的权值与阈值,在谈到
|
||||
@ -100,7 +100,7 @@ BP算法的更新规则是基于每个样本的预测值与真实类标的均方
|
||||
> * 局部极小解:参数空间中的某个点,其邻域点的误差函数值均不小于该点的误差函数值。
|
||||
> * 全局最小解:参数空间中的某个点,所有其他点的误差函数值均不小于该点的误差函数值。
|
||||
|
||||
<br>![pic](http://index.zeekling.cn/gogsPics/ml/nn/12.png)<br>
|
||||
<br>![pic](https://img.zeekling.cn/images/2020/04/25/nn_12.png)<br>
|
||||
要成为局部极小点,只要满足该点在参数空间中的梯度为零。局部极小可以有多个,而全局最小只有一个。全局最小一定是局部极小,但
|
||||
局部最小却不一定是全局最小。显然在很多机器学习算法中,都试图找到目标函数的全局最小。梯度下降法的主要思想就是沿着负梯度方
|
||||
向去搜索最优解,负梯度方向是函数值下降最快的方向,若迭代到某处的梯度为0,则表示达到一个局部最小,参数更新停止。因此在现
|
||||
|
12
nn/ResNet.md
12
nn/ResNet.md
@ -11,7 +11,7 @@
|
||||
2. 网络性能会逐渐趋于饱和,甚至还会开始下降,可以观察到下图中56层的误差比20层的更多,故这种现象并不是由于过拟合造成的。
|
||||
这种现象称为深度网络的退化问题。
|
||||
|
||||
![pic](http://www.zeekling.cn/gogsPics/ml/nn/13.png)
|
||||
![pic](https://img.zeekling.cn/images/2020/04/25/nn_13.png)
|
||||
|
||||
ResNet深度残差网络,成功解决了此类问题,使得即使在网络层数很深(甚至在1000多层)的情况下,网络依然可以得到很好的性能与效
|
||||
率。
|
||||
@ -22,7 +22,7 @@ ResNet引入残差网络结构(residual network),即在输入与输出之
|
||||
点类似与电路中的“短路”,也是文中提到identity mapping(恒等映射y=x)。原来的网络是学习输入到输出的映射H(x),而残差网络学
|
||||
习的是$$ F(x)=H(x)−x $$。残差学习的结构如下图所示:
|
||||
|
||||
![pic](http://www.zeekling.cn/gogsPics/ml/nn/14.png)
|
||||
![pic](https://img.zeekling.cn/images/2020/04/25/nn_14.png)
|
||||
|
||||
另外我们可以从数学的角度来分析这个问题,首先残差单元可以表示为:
|
||||
|
||||
@ -52,17 +52,17 @@ $$
|
||||
用计算方式为$$ H(x)=F(x)+x $$
|
||||
2. 虚线的的Connection部分,表示通道不同,如上图的第一个绿色矩形和第三个绿色矩形,分别是3x3x64和3x3x128的特征图,通道不
|
||||
同,采用的计算方式为$$ H(x)=F(x)+Wx $$,其中W是卷积操作,用来调整x维度的。
|
||||
![pic](http://www.zeekling.cn/gogsPics/ml/nn/16.png)
|
||||
![pic](https://img.zeekling.cn/images/2020/04/25/nn_16.png)
|
||||
|
||||
## 残差学习的本质
|
||||
|
||||
![pic](http://www.zeekling.cn/gogsPics/ml/nn/15.png)
|
||||
![pic](https://img.zeekling.cn/images/2020/04/25/nn_15.png)
|
||||
|
||||
残差网络的确解决了退化的问题,在训练集和校验集上,都证明了的更深的网络错误率越小:
|
||||
![pic](http://www.zeekling.cn/gogsPics/ml/nn/17.png)
|
||||
![pic](https://img.zeekling.cn/images/2020/04/25/nn_17.png)
|
||||
|
||||
下面是resnet的成绩单, 在imagenet2015夺得冠军:
|
||||
|
||||
![pic](http://www.zeekling.cn/gogsPics/ml/nn/18.png)
|
||||
![pic](https://img.zeekling.cn/images/2020/04/25/nn_18.png)
|
||||
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
卷积神经网络沿用了普通的神经元网络即多层感知器的结构,是一个前馈网络。以应用于图像领域的CNN为例,大体结构如图。
|
||||
|
||||
![卷积神经网络](http://index.zeekling.cn/gogsPics/ml/neuralNetwork/cnn2.jpg)
|
||||
![卷积神经网络](https://img.zeekling.cn/images/2020/04/25/cnn2.jpg)
|
||||
|
||||
### 输入层
|
||||
为了减小后续BP算法处理的复杂度,一般建议使用灰度图像。也可以使用RGB彩色图像,此时输入图像原始图像的RGB三通道。对于输入的
|
||||
@ -34,7 +34,7 @@ Leaky ReLU 当x<0 时,y = α(exp(x-1)),当x>0时,y= x
|
||||
影响图像质量的情况下,压缩图片,减少参数。简单来说,假设现在设定池化层采用MaxPooling,大小为2*2,步长为1,取每个窗口最
|
||||
大的数值重新,那么图片的尺寸就会由3*3变为2*2:(3-2)+1=2。从上例来看,会有如下变换:
|
||||
|
||||
![池化](http://index.zeekling.cn/gogsPics/ml/neuralNetwork/853467-20171104142056685-2048616836.png)
|
||||
![池化](https://img.zeekling.cn/images/2020/04/25/853467-20171104142056685-2048616836.png)
|
||||
|
||||
### 全连接层
|
||||
|
||||
@ -52,7 +52,7 @@ Layer里,采用softmax对其进行分类。
|
||||
通过卷积操作,把 全连接变成局部连接 ,因为多层网络能够抽取高阶统计特性, 即使网络为局部连接,由于格外的突触连接和额外的
|
||||
神经交互作用,也可以使网络在不十分严格的意义下获得一个全局关系。
|
||||
|
||||
![局部感知](http://index.zeekling.cn/gogsPics/ml/neuralNetwork/cnn3.jpg)
|
||||
![局部感知](https://img.zeekling.cn/images/2020/04/25/cnn3.jpg)
|
||||
|
||||
### 权值共享
|
||||
不同的图像或者同一张图像共用一个卷积核,减少重复的卷积核。同一张图像当中可能会出现相同的特征,共享卷积核能够进一步减少权
|
||||
|
12
nn/rnn.md
12
nn/rnn.md
@ -3,35 +3,35 @@
|
||||
## RNN结构
|
||||
RNN结构如下:
|
||||
|
||||
![rnn](http://index.zeekling.cn/gogsPics/ml/neuralNetwork/rnn1.png)
|
||||
![rnn](https://img.zeekling.cn/images/2020/04/25/rnn1.png)
|
||||
|
||||
- 左侧是RNN的原始结构, 右侧是RNN在时间上展开的结果
|
||||
- RNN的结构,本质上和全连接网络相同
|
||||
|
||||
![rnn](http://index.zeekling.cn/gogsPics/ml/neuralNetwork/rnn2.gif)
|
||||
![rnn](https://img.zeekling.cn/images/2020/04/25/rnn2.gif)
|
||||
|
||||
|
||||
## LSTM 网络
|
||||
LSTM 同样是这样的结构,但是重复的模块拥有一个不同的结构。不同于单一神经网络层,这里是有四个,以一种非常特殊的方式进行交互。
|
||||
|
||||
![SLTM](http://index.zeekling.cn/gogsPics/ml/neuralNetwork/005BVyzmly1fotnatxsm7j30jg07bjsi.jpg)
|
||||
![SLTM](https://img.zeekling.cn/images/2020/04/25/005BVyzmly1fotnatxsm7j30jg07bjsi.jpg)
|
||||
|
||||
|
||||
### 遗忘门
|
||||
在我们 LSTM 中的第一步是决定我们会从细胞状态中丢弃什么信息。这个决定通过一个称为忘记门层完成。该门会读取ht−1和xt,输出一个在
|
||||
0到 1之间的数值给每个在细胞状态 Ct−1 中的数字。1 表示“完全保留”,0 表示“完全舍弃”。
|
||||
|
||||
![遗忘门](http://index.zeekling.cn/gogsPics/ml/neuralNetwork/005BVyzmly1fotoa9sgm5j30jg06074q.jpg)
|
||||
![遗忘门](https://img.zeekling.cn/images/2020/04/25/005BVyzmly1fotoa9sgm5j30jg06074q.jpg)
|
||||
|
||||
### 输入门
|
||||
我们把旧状态与ft相乘,丢弃掉我们确定需要丢弃的信息。接着加上it∗C~t。这就是新的候选值,根据我们决定更新每个状态的程度进行变化。
|
||||
|
||||
![输入门](http://index.zeekling.cn/gogsPics/ml/neuralNetwork/005BVyzmly1fotoftw50ij31eq0fomz4.jpg)
|
||||
![输入门](https://img.zeekling.cn/images/2020/04/25/005BVyzmly1fotoftw50ij31eq0fomz4.jpg)
|
||||
|
||||
### 输出门
|
||||
在语言模型的例子中,因为他就看到了一个 代词,可能需要输出与一个 动词 相关的信息。例如,可能输出是否代词是单数还是负数,这样如
|
||||
果是动词的话,我们也知道动词需要进行的词形变化。
|
||||
|
||||
![输出门](http://index.zeekling.cn/gogsPics/ml/neuralNetwork/005BVyzmly1fotoky28zbj30jg06074w.jpg)
|
||||
![输出门](https://img.zeekling.cn/images/2020/04/25/005BVyzmly1fotoky28zbj30jg06074w.jpg)
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user