9-神经网络的学习机制

一、损失函数

均方误差

E = 1 2 ∑ k ( y k − t k ) 2 E = \frac{1}{2} \sum_k(y_k - t_k)^2 E=21k(yktk)2

  • y k y_k yk : 表示神经网络的输出数据
  • t k t_k tk:神经网络的监测数据
  • k:表示数据维度

交叉熵误差

E = − ∑ k t k l o g ( y k ) E = -\sum_k t_k log (y_k) E=ktklog(yk)

  • log 为以 e 为底的对数
  • y k y_k yk : 表示神经网络的输出数据
  • t k t_k tk 为监测数据
  1. t k t_k tkone_hot 表示(即正确解用1表示,其余均用0表示),例如:

    y = [0.02, 0.04, 0.13, 0.03, 0.15, 0.14, 0.20,0.11,0.02,0.16]
    t = [0,0,1,0,0,0,0,0,0,0]
    

    则表示第2个(从0开始)输出是正确的y = 0.13是正确的

    很容易看出,只有当 t k t_k tk 不为0时, t k l o g ( y k ) t_k log(y_k) tklog(yk) 才不会为0,也就是说,实际上,假设 y 0 y_0 y0 为正确解,则:

E = − l o g ( y 0 ) E = -log(y_0) E=log(y0)

  1. t k t_k tk 不是 one_hot 表示,而是用标签(指明输出的正确解是第几个)表示,例如:

    y = [0.02, 0.04, 0.13, 0.03, 0.15, 0.14, 0.20,0.11,0.02,0.16]
    t = 2
    

    表示第2个(从0开始)输出y = 0.13是正确的,所以就可以利用公式 E = − l o g ( y 0 ) E = -log(y_0) E=log(y0)来求交叉熵。

    因此, t k t_k tk是否采用 one_hot 表示,都用同一个公式。只不过,如果是用one_hot表示的话,只需要 直接 tlog(y) 就可以计算出 l o g ( y 0 ) log(y_0) log(y0) ,而不使用 one_hot表示的话,就需要自己根据标签来把正确解 y 0 y_0 y0 找出来。

二、数值微分

导数

  1. 定义式
    d f ( x ) d x = lim ⁡ h → 0 f ( x + h ) − f ( x ) h \frac{df(x)}{dx} = \lim_{h\rightarrow0} \frac{f(x+h)-f(x)}{h} dxdf(x)=h0limhf(x+h)f(x)
    表示函数 f ( x ) f(x) f(x) 在x处的斜率

  2. 为了减小计算误差,常使用下面的式子计算:
    d f ( x ) d x = lim ⁡ h → 0 f ( x + h ) − f ( x − h ) 2 h \frac{df(x)}{dx} = \lim_{h\rightarrow0} \frac{f(x+h)-f(x-h)}{2h} dxdf(x)=h0lim2hf(x+h)f(xh)

偏导数

定义式:
∂ f ∂ x = lim ⁡ Δ x → 0 f ( x + Δ x , y ) − f ( x , y ) x \frac{\partial f}{\partial x} = \lim_{\Delta x\rightarrow0} \frac{f(x+\Delta x,y)-f(x,y)}{x} xf=Δx0limxf(x+Δx,y)f(x,y)

∂ f ∂ y = lim ⁡ Δ y → 0 f ( x , y + Δ y ) − f ( x , y ) x \frac{\partial f}{\partial y} = \lim_{\Delta y\rightarrow0} \frac{f(x,y+\Delta y)-f(x,y)}{x} yf=Δy0limxf(x,y+Δy)f(x,y)

第一条式子表示函数在点(x,y)处沿 x方向的斜率;

第二条式子表示函数在点(x,y)处沿 y方向的斜率。

梯度

表达式:
( ∂ f ∂ x , ∂ f ∂ y ) (\frac{\partial f}{\partial x}, \frac{\partial f}{\partial y}) (xf,yf)
表示一个向量,该向量的方向指向函数增加最快的方向。

神经网络中一般使用负梯度,因为要计算损失函数的最小值。

梯度法

分为梯度下降法(寻找最小值)梯度上升法(寻找最大值)

执行梯度(下降)法寻找最优参数的过程:首先初始化参数当前值,然后求出函数在当前位置的梯度,之后前进一段位置,继续求梯度,继续前进……如此循环下去,知道寻找到最小值。

公式:
{ x 0 = x 0 − η ∂ f ∂ x 0 x 1 = x 1 − η ∂ f ∂ x 1 \begin{cases}x_0 = x_0-\eta \frac{\partial f}{\partial x_0}\\\\x_1 = x_1-\eta \frac{\partial f}{\partial x_1}\end{cases} x0=x0ηx0fx1=x1ηx1f
η \eta η 为学习率,表示参数更新的速率,它的值不能过大,否则越过了最小值都不知道;也不能过小,否则需要耗时过长。

posted @ 2020-07-24 22:35  aJream  阅读(26)  评论(0编辑  收藏  举报