机器学习之人工神经网络

时间:2022-12-25 17:19:02

人工神经网络由一系列神经元组成:
机器学习之人工神经网络
每个神经元都代表了一个特定的线性函数:
机器学习之人工神经网络
每个单元都会进行以下的计算过程:

ini = ΣWj,iaj
ai = g(ini)

通过调整每一个神经元的权值W,可以使得整个神经网络非常好的拟合数据。

激活函数

每个神经元中都有一个激活函数,通常使用Sigmoid函数:
机器学习之人工神经网络

f(x) = 1/(1+e -x) dy/dx = y(1-y)

因为它在定义域内光滑且连续,输出十分平缓。

训练过程

function ANN(examples) returns a neural network

network = a network with random weights
repeat do
for each example in examples do
FeedForward(network, example)
BackPropagation(network, example)
error = CalError(network, examples)
until error is small enough
return network

可以看到训练过程包括两个主要步骤:

  1. 前向传播(Feed Forward):将样例输入神经网络中获得每个神经元的输出;
  2. 后向反馈(Back Propagation):根据每个神经元的输出调整权值。

前向传播

在前向传播过程中,我们将输入经过两层神经元后获得每一个神经元的输出,每一层都执行以下计算:

ini = ΣWj,iaj
ai = g(ini)

function FeedForward(network, example) return a output vector

for L = 2 to layer_num do
for each node i in layer L do:
sum = weight_L_i × a_L-1 // dot product
a_L_i = g(sum)

后向反馈

在后向反馈中,我们根据输出结果与正确结果相比较后,对各个神经元的权值进行修正。

function BackPropagation(network, example)

for each node j in the output layer do
b_j = g'(a_j)*(rightanswer_j-a_j)

for L = layer_num-1 to 1 do
for each node i in layer L do
b_i = g'(a_i)*(w × b_j)

for each weight w_i,j in network do
w_i,j = w_i, j + alpha*ai*b_j // alpha 为学习率