神经网络的入门

神经网络的介绍

神经元:多个输入—->权重—>偏置—>激励函数—>输出
符号表示:x为输入函数,W为权重,b为偏置常量,f为激励函数,y为输出
则y = f ( ∑ ( x i ∗ w i + b ) ) y=f(\sum(x_i * w_i+b))y =f (∑(x i ​∗w i ​+b ))

在神经网络中,网络层包括 输入层中间层(隐藏层)输出层
正向传播:从转递输入信息到产生输出的过程
反向传播:从输出向输入逆向传递信息的过程
符号表示:
前面网络层有m个,后面网络层有n个。则Wij:前面网络层i对后面网络层j的权重,W为m *n的矩阵。
上层网络层有m个神经元,即上层网络的输出向量的元素为m。
i作为上层网络的下标,j作为下层网络的下标。
Y i = X j = ( x 1 , x 2 , x 3 . . . x m ) Y_i=X_j=(x_1,x_2,x_3…x_m)Y i ​=X j ​=(x 1 ​,x 2 ​,x 3 ​…x m ​) 下层网络层的每一个神经元都有m个输入
下层神经网络的神经元偏置B j = ( b 1 , b 2 , b 3 . . . b n ) B_j=(b_1,b_2,b_3…b_n)B j ​=(b 1 ​,b 2 ​,b 3 ​…b n ​)

下层神经网络的输出为Y j = ( y 1 , y 2 , y 3 . . . y n ) Y_j=(y_1,y_2,y_3…y_n)Y j ​=(y 1 ​,y 2 ​,y 3 ​…y n ​)

则Y j = f ( ∑ ( X j ∗ W i j ) + B j ) Yj=f(\sum(X_j *W_{ij})+B_j)Y j =f (∑(X j ​∗W i j ​)+B j ​)

  • 回归问题:连续性问题
  • 分类问题:离散问题

神经网络的架构

numpy.where(x0,0,1)
numpy.where(1/1+exp(-x))

sigmid的导数:y ′ = ( 1 − y ) ∗ y y’=(1-y)*y y ′=(1 −y )∗y

numpy内置tanh函数:t a n h ( x ) = ( e x p ( x ) − e x p ( − x ) ) ( e x p ( x ) + e x p ( − x ) ) tanh(x)=\frac{(exp(x)-exp(-x))}{(exp(x)+exp(-x))}t a n h (x )=(e x p (x )+e x p (−x ))(e x p (x )−e x p (−x ))​

numpy.tanh(x)
numpy.where(x0,0,x)
numpy.where(x0,0.01*x,x)

对于ReLU的优化,对负数区域增加小的梯度避免出现:dying ReLU现象

用于输出回归函数的输出层:y=x

y = e x p ( X ) / ∑ e x p ( X k ) y=exp(X)/\sum exp(X_k)y =e x p (X )/∑e x p (X k ​)

numpy.exp(x)/numpy.sum(numpy.exp(x))

对输出与正确答案的误差进行定义的函数就是损失函数

E = 1 2 ∑ ( y k − t k ) 2 E=\frac{1}{2}\sum(y_k-t_k)^2 E =2 1 ​∑(y k ​−t k ​)2

其中 E 表示误差,y k y_k y k ​表示输出层的各个输出值,t k t_k t k ​表示正确答案

import numpy as np
def square_sum(y,t):
    1.0/2.0*np.sum(np.square(y-t))

E = − ∑ t k l o g ( y k ) E=-\sum t_klog(y_k)E =−∑t k ​l o g (y k ​)

其中 E 表示误差,t k t_k t k ​表示正确答案,y k y_k y k ​表示输出答案,由于t k t_k t k ​是独热编码,故只有唯一正确为1的项对误差产生影响。

import numpy as np
def cross_entropy(y,t):
    return -np.sum(t*np.log(y+1e-7))

∆ω \omega ω=φ y i y j \varphi y_i y_j φy i ​y j ​

其中Δ ω \Delta \omega Δω 表示为连接强度(权重)的变化量,φ \varphi φ 为一常量, y i y_i y i ​ 表示为突触前膜神经元的兴奋程度,y j y_j y j ​ 表示为突触后膜神经元的兴奋程度。

意义:突触前膜和突触后膜产生的兴奋使突触的能量传递效率增强。与之相反,长时间没有兴奋,突触的能量传递效率衰退。

Δ ω = η ( y j − t ) y i \Delta\omega=\eta(y_j-t)y_i Δω=η(y j ​−t )y i ​

其中Δ ω \Delta \omega Δω 表示为权重的变化量,y i y_i y i ​ 突触的前神经元的输出,y j y_j y j ​ 表示突触的后神经元的输出,t表示正确答案,η \eta η表示学习系数的常数。

意义:

  • 如果输出与正确答案之间的差值越大,则需要设置的权重的修正量也越大。
  • 如果输入越大,则需要设置的权重的修正量也越大。

  • 随机梯度下降法(SGD)

  • Momentum
  • AdaGrad
  • RMSProp
  • Adam

更新公式:
w ← w − η ∂ E ∂ w w\leftarrow w-\eta\frac{∂ E}{∂ w}w ←w −η∂w ∂E ​

b ← b − η ∂ E ∂ b b\leftarrow b-\eta\frac{∂ E}{∂ b}b ←b −η∂b ∂E ​

优点:随机选样本,不容易掉入局部最优解。简单确定更新量,简单的代码实现。

缺点:在学习的过程中无法对更新量灵活调整

w ← w − η ∂ E ∂ w + α Δ w w\leftarrow w-\eta\frac{∂ E}{∂ w}+\alpha\Delta w w ←w −η∂w ∂E ​+αΔw

b ← b − η ∂ E ∂ b + α Δ b b\leftarrow b-\eta\frac{∂ E}{∂ b}+\alpha\Delta b b ←b −η∂b ∂E ​+αΔb

α \alpha α决定惯性的强度常量,Δ w \Delta w Δw表示前一次的更新量

优点:防止更新量的急剧变化

缺点:必须事先给定η \eta η和 α \alpha α,增加网络调整的难度。

h ← h + ( ∂ E ∂ w ) 2 h\leftarrow h+(\frac{∂ E}{∂ w})^2 h ←h +(∂w ∂E ​)2

w ← w − η 1 h ∂ E ∂ w w\leftarrow w-\eta\frac{1}{\sqrt{h}}\frac{∂ E}{∂ w}w ←w −ηh ​1 ​∂w ∂E ​

h ← h + ( ∂ E ∂ b ) 2 h\leftarrow h+(\frac{∂ E}{∂ b})^2 h ←h +(∂b ∂E ​)2

b ← b − η 1 h ∂ E ∂ b b\leftarrow b-\eta\frac{1}{\sqrt{h}}\frac{∂ E}{∂ b}b ←b −ηh ​1 ​∂b ∂E ​

优点:对更新量进行调整

缺点:更新量持续减少

h ← ρ h + ( 1 − ρ ) ( ∂ E ∂ w ) 2 h\leftarrow \rho h+(1-\rho)(\frac{∂ E}{∂ w})^2 h ←ρh +(1 −ρ)(∂w ∂E ​)2

w ← w − η 1 h ∂ E ∂ w w\leftarrow w-\eta\frac{1}{\sqrt{h}}\frac{∂ E}{∂ w}w ←w −ηh ​1 ​∂w ∂E ​

h ← ρ h + ( 1 − ρ ) ( ∂ E ∂ b ) 2 h\leftarrow \rho h+(1-\rho)(\frac{∂ E}{∂ b})^2 h ←ρh +(1 −ρ)(∂b ∂E ​)2

b ← b − η 1 h ∂ E ∂ b b\leftarrow b-\eta\frac{1}{\sqrt{h}}\frac{∂ E}{∂ b}b ←b −ηh ​1 ​∂b ∂E ​

ρ \rho ρ一般设置为0.9。

m 0 = v 0 = 0 m_0=v_0=0 m 0 ​=v 0 ​=0

m t = β 1 m t − 1 + ( 1 − β 1 ) ∂ E ∂ w m_t=\beta_1m_{t-1}+(1-\beta_1)\frac{∂ E}{∂ w}m t ​=β1 ​m t −1 ​+(1 −β1 ​)∂w ∂E ​

v t = β 2 v t − 1 + ( 1 − β 2 ) ( ∂ E ∂ w ) 2 v_t=\beta_2v_{t-1}+(1-\beta_2)(\frac{∂ E}{∂ w})^2 v t ​=β2 ​v t −1 ​+(1 −β2 ​)(∂w ∂E ​)2

m t ^ = m 0 t 1 − β 1 t \hat{m_t}=\frac{m_{0t}}{1-\beta_1^t}m t ​^​=1 −β1 t ​m 0 t ​​

v t ^ = v t 1 − β 2 t \hat{v_t}=\frac{v_t}{1-\beta_2^t}v t ​^​=1 −β2 t ​v t ​​

w ← w − η m t ^ v t ^ + ο w \leftarrow w-\eta\frac{\hat{m_t}}{\sqrt{\hat{v_t}}+\omicron}w ←w −ηv t ​^​​+οm t ​^​​

t表示重复次数

Original: https://blog.csdn.net/m0_64881386/article/details/123880862
Author: love2study
Title: 神经网络的入门

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/762010/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球