zoukankan      html  css  js  c++  java
  • 神经网络(一)神经网络基础知识

    1.人工神经元模型

    神经元信息处理过程的简化概况:

    1.每个神经元都是一个多输入单输出的信息处理单元
    2.神经元输入分为兴奋性输入和抑制性输入两种类型(即有正负)
    3.神经元具有空间整合性和阈值特性
    4.神经元输入与输出间有固定的时滞,主要取决于突触延搁
    5.忽略时间整合作用和不应期
    6.神经元本身是非时变的即突触时延和突触强度是常数

    神经元的数学模型

    (x_i(t))表示t时刻神经元j接受的来自神经元i的输入信息,(o_j(t))表示t时刻神经元j的输出信息,则
    (o_j(t)=f{[sum_{i+1}^{n}w_{ij}x_i(t- au_{ij})]-T_j})

    其中( au_{ij})输入输出间的突触时延
    (T_j)神经元j的阈值
    (w_{ij})神经元i到j的突触连接系数或权重值

    输入总和常常称为神经元在t时刻的净输入
    (net'_j(t)=sum_{i=1}^{n}w_{ij}x_{i}(t))
    (net'_j(t)=W_j^TX)
    (W_j=(w_{1j},w_{2j},...,w_{nj})^T)
    (X=(x_1,x_2,...,x_n)^T)
    (x_0=-1,w_{0j}=T_j)(net'_j-T_j=net_j=sum_{i=0}^nw_{ij}x{i}=W^T_jX)

    综上,神经元模型可简化为(o_j=f(net_j)=f(W_j^TX))

    2.人工神经网络模型

    1.Hebb学习

    是一种纯前馈无监督学习
    学习信号简单地等于神经元的输出
    (r=f(W_j^TX))
    权向量调整公式
    (Delta W_j=eta f(W_j^TX)X)
    (Delta w_{ij}=eta f(W_j^TX)X=eta o_jx_i)
    Hebb学习规则要求预先设置权饱和值 防止输入输出无约束增长
    此外,还要求权值初始化对(W_j(0))赋予零附近的小随机数

    例如T=0,(eta=1,X^1=(1,-2,1.5,0)^T,X^2=(1,-0.5,-2,-1.5)^T,X^3=(0,1,-1,1.5)^T,W(0)=(1,-1,0,0.5))转移函数为sgn函数

    import torch as t
    
    def sgn(x):
        if x[0]>=0: return 1
        else: return -1
    
    w_0 = t.Tensor([[1,-1,0,0.5]])
    eta = 1
    x = []
    x.append(t.Tensor([[1],[-2],[1.5],[0]]))
    x.append(t.Tensor([[1],[-0.5],[-2],[-1.5]]))
    x.append(t.Tensor([[0],[1],[-1],[1.5]]))
    
    for i in x:
        net = w_0.mm(i)
        print(net)
        w_0 = w_0+eta*sgn(net)*i.t()
        print(w_0)
    
    tensor([[3.]])
    tensor([[ 2.0000, -3.0000,  1.5000,  0.5000]])
    tensor([[-0.2500]])
    tensor([[ 1.0000, -2.5000,  3.5000,  2.0000]])
    tensor([[-3.]])
    tensor([[ 1.0000, -3.5000,  4.5000,  0.5000]])
    

    2.Percepton学习规则

    (r=d_j-o_j)
    $o_j=f(WT_jX)=sgn(WT_jX)= egin {cases} 1 & W^T_jXge0 -1 & W^T_jX<0 end {cases} $
    权值调整公式为
    (Delta W_j=eta [d_j-sgn(W_j^TX)]X)
    (Delta w_{ij}=eta [d_j-sgn(W_j^TX)]x_i)
    在有误差的情况下由于(d_j,sgn)取值为{-1,1},权值调整公式可简化为
    (Delta W_j=pm 2 eta X)
    只适用于二进制神经元 是一种有监督学习

    3.(delta)学习规则

    学习信号规定为
    (r=[d_j-f(W_j^TX)]f'(W_j^TX)=(d_j-o_j)f'(net_j))
    要求转移函数可导,只适用于有监督学习中定义的连续转移函数
    (Delta W_j=eta (d_j-o_j)f'(net_j)X)
    (Delta w_{ij}=eta (d_j-o_j)f'(net_j)x_i)

    例如(w_0=T,x_0=-1,eta = 0.1,X^1=(-1,1,-2,0)^T,X^2=(-1,0,1.5,-0.5)^T,X^3=(-1,-1,1,0.5)^T,d^1=-1,d^2=-1,d^3=1,W(0)=(0.5,1,-1,0)^T)

    import torch as t
    import math
    
    def f(x):
        return (1-math.e**(-x))/(1+math.e**(-x))
    
    def f_d(x):
        return (1-f(x)**2)/2
    
    w_0 = t.Tensor([[0.5,1,-1,0]])
    eta = 0.1
    x = []
    x.append(t.Tensor([[-1],[1],[-2],[0]]))
    x.append(t.Tensor([[-1],[0],[1.5],[-0.5]]))
    x.append(t.Tensor([[-1],[-1],[1],[0.5]]))
    
    d = []
    d.append(-1)
    d.append(-1)
    d.append(1)
    
    for i,j in zip(x,d):
        net = w_0.mm(i)
        o=f(net)
        w_0=w_0+eta*(j-o)*f_d(net)*i.t()
        print(w_0)
    
    
    tensor([[ 0.5259,  0.9741, -0.9482,  0.0000]])
    tensor([[ 0.5314,  0.9741, -0.9563,  0.0027]])
    tensor([[ 0.5046,  0.9474, -0.9296,  0.0161]])
    

    4.LMS学习规则

    学习信号定义为(r=d_j-W_j^TX)
    (Delta W_j=eta (d_j-W_j^TX)X)
    (Delta w_{ij}=eta (d_j-W_j^TX)x_j)
    可以看做(delta)学习的特例
    有监督学习 权值可初始化为任意值

    5.Correlation学习规则

    学习信号为(r=d_j)
    (Delta W_j = eta d_jX)
    (Delta w_{ij} = eta d_j x_i)
    有监督学习 要求权值初始化为0

    6.Winner-Take-All学习规则

    只有响应最大的神经元有权利调整权向量
    (W_j^{T_*}X=max(W_i^TX))
    (Delta W_{j^*}=alpha (X-W_{j^*}))
    (alpha in (0,1])为一个小的学习常数

    3.小结

    1

  • 相关阅读:
    ES6 解构
    一些vue的知识点
    CSS选择器
    Django学习--介绍Django
    正则表达式
    ftp命令
    Vim学习指南
    关于ACM与OJ
    brctl命令
    LXC
  • 原文地址:https://www.cnblogs.com/ChetTlittilebread/p/10296752.html
Copyright © 2011-2022 走看看