人工智能导论复习整理(三)

    技术2022-07-10  140

    神经网络

    对一个神经元建模

    对于一个神经元而言,图中 x 0 , x 1 , x 2 x_0,x_1,x_2 x0,x1,x2是输入, w 0 , w 1 , w 2 w_0,w_1,w_2 w0,w1,w2是输入对应的权重(反映了输入刺激的强度),胞体求得输入的加权和,并加上一个偏置 b b b,再对其作用函数 f f f,得到输出 f ( ∑ i w i x i + b ) f(\sum_iw_ix_i+b) f(iwixi+b)

    对于一个神经元的输出,给定一个合适的损失函数,这个神经元就可以作为一个线性分类器。同样,一个神经元也可以用来实现二分类。

    Binary Softmax classifier

    单个神经元的输出可以转换成概率: P ( y i = 1 ∣ x i ; w ) = σ ( ∑ i w i x i + b ) P(y_i=1|x_i;w) = \sigma(\sum_iw_ix_i+b) P(yi=1xi;w)=σ(iwixi+b) 其中, σ \sigma σ是激活函数。

    此时,另一类别的概率为 P ( y i = 0 ∣ x i ; w ) = 1 − P ( y i = 1 ∣ x i ; w ) P(y_i=0|x_i;w)=1-P(y_i=1|x_i;w) P(yi=0xi;w)=1P(yi=1xi;w) 计算出两个类别的概率,就能计算交叉熵损失(cross-entropy loss),进而优化它,使这个神经元成为一个二分Softmax分类器。

    Binary Support Vector Machine

    同样,将max-margin hinge loss作用在神经元的输出上,也能将其训练成Binary SVM。

    激活函数

    激活函数相当于神经元对输入信息的处理。

    神经网络可以实现很复杂的功能,非线性的激活函数可以近似

    几乎所有的复杂功能。但是并非神经网络层数越多,能实现的功能越复杂。如果神经元的激活函数是线性函数,那么对于任意一一个多层的神经网络,都有一个与之等价的单层神经网络。

    输入层、输出层、隐层(隐层是位于输入层和输出层之间的一层)

    常用的激活函数

    Sigmoid : σ ( x ) = 1 1 + e − x \sigma(x)=\dfrac{1}{1+e^{-x}} σ(x)=1+ex1

    值域: [ 0 , 1 ] [0,1] [0,1]历史上很常用,“激活率”恰到好处(符合人类的感觉阈限特性)问题: 梯度下降过快关于 0 0 0不对称exp()计算代价昂贵

    Tanh: tanh ⁡ x = sinh ⁡ x cosh ⁡ x = e x − e − x e x + e − x = 2 σ ( 2 x ) − 1 \tanh x=\dfrac{\sinh x}{\cosh x}=\dfrac{e^x-e^{-x}}{e^x+e^{-x}}=2\sigma(2x)-1 tanhx=coshxsinhx=ex+exexex=2σ(2x)1

    值域: [ − 1 , 1 ] [-1,1] [1,1]关于 0 0 0对称问题:饱和时,梯度会消失

    ReLU(Rectified Linear Unit): f ( x ) = max ⁡ ( 0 , x ) f(x)=\max(0,x) f(x)=max(0,x)

    大于 0 0 0的区域不会饱和计算简单收敛速度快,约为Sigmoid和Tanh的6倍比Sigmoid更接近生物学的激活特点问题:不以零为中心

    Leaky ReLU: f ( x ) = max ⁡ ( 0.01 x , x ) f(x)=\max(0.01x,x) f(x)=max(0.01x,x)

    Parametric Rectifier (PReLU) : f ( x ) = max ⁡ ( α x , x ) f(x)=\max(\alpha x,x) f(x)=max(αx,x)

    拥有ReLU的全部优点不会饱和

    Exponential Linear Units(ELU) : f ( x ) = { x if x > 0 α ( e x − 1 ) if x ≤ 0 f(x)=\left\{ \begin{aligned} & x &\text{if}\quad x>0\\ & \alpha(e^x-1)&\text{if}\quad x\leq 0 \\ \end{aligned} \right. f(x)={xα(ex1)ifx>0ifx0

    拥有ReLU的全部优点对噪声有鲁棒性

    Maxout: max ⁡ ( w 1 T x + b 1 , w 2 T x + b 2 ) \max(w_1^Tx+b_1,w_2^Tx+b_2) max(w1Tx+b1,w2Tx+b2)

    不完全是线性的ReLU和Leaky ReLU的综合不会饱和,梯度不会消失问题:变量数增多

    激活函数的选择

    倾向于选择能更快收敛的激活函数分类时,倾向于使用Sigmoid函数和Tanh函数。但如果梯度消失了,则会避免使用这两个激活函数。ReLU函数一般用在隐层里,但是要小心它的学习率(learning rates)。如果网络中有些神经元死了(即梯度消失了),则可以试试Leaky ReLU、Maxout或者ELU。一般首选ReLU,如果效果不好,再尝试别的激活函数。

    全连接前向网络

    全连接:相邻层之间,每个神经元都和相邻层的每一个神经元相连接。

    前向网络:上一层的输出作为下一层的输入,层层传递下去,且这样的网络没有反馈。

    这样的网络实质上定义了一个函数,给定输入,得到输出。即,给定一个网络结构,实际上就定义了一组函数。函数具体的参数由网络的参数决定,网络的参数则是通过学习、训练得到的。

    网络的计算可以用矩阵表示。对于上图的那个神经网络,其输入输出的关系为: y = f ( x ) y=f(x) y=f(x),具体表示为 y = f ( x ) = σ ( W L ⋯ σ ( W 2 σ ( W 1 x + b 1 ) + b 2 ) ⋯ + b L ) y=f(x)=\sigma(W^L\cdots\sigma(W^2\sigma(W^1x+b^1)+b^2)\cdots+b^L) y=f(x)=σ(WLσ(W2σ(W1x+b1)+b2)+bL),其中 W i , i = 1 , 2 , ⋯   , L W^i,i =1,2,\cdots, L Wi,i=1,2,,L为第 i i i层的权重, b i , i = 1 , 2 , ⋯   , L b^i,i =1,2,\cdots, L bi,i=1,2,,L为第 i i i层的偏置。这样的过程可以通过并行计算技术来加速矩阵的计算。

    对于分类问题而言,隐层完成特征提取和分类,输出层一般选用Softmax,直接给出分类的结果。

    对于神经网络而言,层数超过三层就算是深度神经网络。层与层之间是流水线的形式,即上一层的输入作为下一层的输出。每一层的抽象级别不同,越靠近输入越具体,越靠近输出越抽象。每一层的参数通过联合训练得到。

    如何训练一个多层的神经网络

    神经网络训练的目的是调整各层的参数(如 W , b W,b W,b),使得神经网络计算出来的结果和真实情况尽可能的接近。训练过程主要包括:信息的正向传播和误差的反向传播。(误差由loss函数提供)

    基于链式法则的反向传播,用以更新 w k , w k ← w k − η ∂ e ∂ w k w_k,\quad w_k \leftarrow w_k-\eta\dfrac{\partial e}{\partial w_k} wk,wkwkηwke ∂ e ∂ w i = ∂ e ∂ h k ∂ h k ∂ h k − 1 ⋯ ∂ h i + 1 ∂ h i ∂ h i ∂ w i \dfrac{\partial e}{\partial w_i} = \dfrac{\partial e}{\partial h_k} \dfrac{\partial h_k}{\partial h_{k-1}}\cdots\dfrac{\partial h_{i+1}}{\partial h_i}\dfrac{\partial h_i}{\partial w_i} wie=hkehk1hkhihi+1wihi 其中, e e e是误差。Upstream gradient为: ∂ e ∂ h i = ∂ e ∂ h k ∂ h k ∂ h k − 1 ⋯ ∂ h i + 1 ∂ h i \dfrac{\partial e}{\partial h_i}=\dfrac{\partial e}{\partial h_k} \dfrac{\partial h_k}{\partial h_{k-1}}\cdots\dfrac{\partial h_{i+1}}{\partial h_i} hie=hkehk1hkhihi+1 Local gradient为: ∂ h i ∂ w i \dfrac{\partial h_i}{\partial w_i} wihi

    神经网络的表达能力

    Universality Theorem:如果一个NN包含一个隐层,那它能近似任意一个连续函数。

    为了防止过拟合,可以选择一个强大的NN,在带上适当的正则化。

    假设有两个神经网络,一个层数少,每层神经元数量多;另一个层数多,每层神经元数量少。这两个网络的参数数量相同,但解决不同问题的时候性能不同。因此如何设计一个网络,需要多少层、每层多少神经元值得思考。

    Processed: 0.012, SQL: 9