机器学习之人工神经网络

人工神经网络由一系列神经元组成:

每个神经元都代表了一个特定的线性函数:

每个单元都会进行以下的计算过程:

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 为学习率
原文地址:https://www.cnblogs.com/zhangyubao/p/7016963.html