深度学习心得05| 神经网络的训练

关键词

  • 深度学习 deep learning

神经网络 $neural$ $network$

神经元 $Neuron$




单个神经元

神经元是一个以$x_1,x_2,……,x_N$为输入,以$w_1,w_2,……,w_N$为权重以及$b$为偏置(截距)的运算单元,其输出为

$y=h(z)=h(a(x))=h(w^Tx+b)=h(w_1x_1+w_2ax_2+……+w_Na_N+b)$

其中$w$为权值项(神经元权重),$b$为偏置项(截距),$w$与$b$均为模型参数Model Parameters

输入向量$\vec{x}=(x_1,x_2,……,x_N)$是一个$N$维向量

仿射变换 affine transformation

函数$z=a(x)$是定义在输入信号为a的仿射变换

仿射映射,是指在几何中,一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间。

$\vec{z}=W\vec{x}+b$

激活函数

函数$y=h(z)$被称为“激活函数”或者“激励函数”。

激活函数的作用就是将之前仿射变换输出的函数值$z$进行空间映射

有以下几种激励函数

第一种:线性

$\sigma(x)=kx+b$

note:多层神经网络如果采用线性的激励函数和一层神经网络效果一样

线性回归————带有线性激励函数的一层神经网络

第二种:sigmoid函数

$\sigma(x)=sigmoid(x)=\frac {1}{1+ exp(-x)}$

sigmoid函数的性质

① $f’(z)=f(z)(1−f(z))$

② 范围 (0,1)

③ 输出总为正值

④ 输出总是有界的

⑤ 单调递增

神经元图像

对数几率回归————带有sigmoid激励函数的一层神经网络。

第三种:双曲正切函数 $tanh$

$\sigma(z)=tanh(z)=\frac{e^z-e^{-z}}{e^z+e^{-z}}$

$tanh(z)$函数是$sigmoid$函数的一种变体,它的取值范围为$[-1,1]$,而不是$sigmoid$函数的$[0,1]$,它的导数为$f’(z)=1−f^2(z)$

双曲正切函数的性质

① $f’(z)=1−f^2(z)$

② 范围 $[-1,1]$

③ 输出有正有负

④ 输出总是有界的

⑤ 单调递增

sigmoid函数图像与双曲正切函数图像

第四种:ReLU函数 (Rectified Linear Units)

$\sigma(x)=max{0,a}$

① 分段

② 范围无界

③ 输出非负稀疏

④ 输出无界

⑤ 单调递增

ReLU函数图像

第五种:softmax函数

$softmax(x)=[\frac{exp(x_1)}{\sum_{i=1}^{C}exp(x_i)},……,\frac{exp(x_C)}{\sum_{i=1}^{C}exp(x_i)}]^T$

softmax函数用在整个神经网络的最后一层,假设最后一层有C个输出,即有C个类。

用于定义多分类的损失函数

各分量总和为1,

sigmoid函数是softmax函数$C=2$的特殊情况

偏置bias的作用





输入向量$\vec{x}=(x_1,x_2,……,x_N,1)$是一个$N+1$维向量





如图,通过增大偏置,可以使输出$y$从$0.5$以下,增加到$0.5$以上

The bias term gives a class prior 偏置给出了先验

举例:根据先验——大多数选择第一类($y>0.5$),很少数人选择第二类($y<0.5$),通过学习知道增大偏置





单一神经元只能做二分类,多分类怎么办?

感知机 $Perceptron$

Perceptron=A Layer of Neurons





选择输出那个最大的,确定是几

感知机有限制

限制1:Output units all operate separately – no shared weights 没有共享权重





限制2:A perceptron can represent AND, OR, NOT, etc., but not XOR linear separator

限制2:Output units all operate separately – no shared weights 没有共享权重





神经网络 $neural$ $network$

神经网络就是将许多神经元联结在一起,这样,一个神经元的输出就可以是另一神经元的输入。

神经网络图像

###完全连接前馈网络 $Fully$ $Connect$ $Feedforward$ $Network$

特点:

每个节点都和上一层的所有节点有链接

每一层节点相同?

完全连接前馈网络图像

神经网络最左边的一层叫做输入层,最右边的一层叫做输出层。中间所有节点组成的一层叫做隐藏层,如此命名是因为我们不能在训练样本中观测到它们的值。

Deep = Many hidden layers

深度学习就是深层神经网络的代名词

###神经网络概况

针对单个神经元,进行两步操作

第一步:仿射变换 linear transformation

$\vec{z}=W\vec{x}+\vec{b}$

仿射变换=线性变换+平移

上一层的输入向量:$\vec{x}=(x_1,x_2,……,x_p)$ 即含有p个神经元

神经网络的权重

$$W=\begin{bmatrix} w_{11} & w_{12} & …… & w_{1p}\ w_{21} & w_{22} & …… & w_{2p}\\…… & …… & …… & ……\\ w_{k1} & w_{k2} & …… & w_{kp}\end{bmatrix} $$

截距:$b=(b_1,b_2,……,b_k)$

下一层含有k个神经元

举例说明:多层神经网络如果采用线性的激励函数和一层神经网络效果一样

$$h_1(a)=W_1a+b_1$$

$$h_2(h_1(a))=W_2h_1(a)+b_2=W_2W_1a+W_2b_1+b2$$

$$令W=W_2W_1a b+W_2b_1+b2$$

$$h_2(h_1(a))=Wa+b$$

第二步:非线性激活 nonlinear activation

神经网络的训练

$min_\theta$ $\frac{1}{n}\sum_{i=1}^{n}L(f(x_i,\theta),y_i)+\lambda\Omega(\theta)$

$f(x_i,\theta)$ 整个神经网络得到的结果

$x_i$ 输入

$\theta$参数

1、初始化模型参数

$\theta={W^{(1)},b^{(1)},……,W^{(L)},b^{(L)}}$

$W^{(L)}、b^{(L)}$ 第L层的参数

2、

假设有$T$个训练样本

$For$ $j=1$ $to$ $T$
{

① 对于训练样例$(x_i,y_i)$

② 计算梯度

$\Delta_i=▽_\theta L(f(x_i,\theta),y_i)+\lambda▽_\theta\Omega(\theta)$

③ 更新参数

$\theta \leftarrow \theta -\gamma \Delta_i$

}

直到收敛

损失函数/目标函数 $Loss$ $functions$ / $Objective$ $functions$

$L(,)$预测值与实际值得距离

交叉熵损失函数 cross-entroy loss function————针对多分类问题

$L(f(x_i,\theta),y_i)=-\sum_{c} I(y=c)logP(y=c|x)$

$f_c(x;\theta)=P(y=c|x)$

$I(y=c)$只有一个是1,其他的都是0

$I(y=c)logP(y=c|x)$

反向传播算法 $Backpropagation$

核心思想:链式法则 chain rule

梯度下降法 $gradient$ $descent$