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

  • 相关阅读:
    LeetCode 295. Find Median from Data Stream (堆)
    LeetCode 292. Nim Game(博弈论)
    《JavaScript 模式》读书笔记(4)— 函数2
    《JavaScript 模式》读书笔记(4)— 函数1
    《JavaScript 模式》读书笔记(3)— 字面量和构造函数3
    《JavaScript 模式》读书笔记(3)— 字面量和构造函数2
    《JavaScript 模式》读书笔记(3)— 字面量和构造函数1
    《JavaScript 模式》读书笔记(2)— 基本技巧3
    《JavaScript 模式》读书笔记(2)— 基本技巧2
    《JavaScript 模式》读书笔记(2)— 基本技巧1
  • 原文地址:https://www.cnblogs.com/ChetTlittilebread/p/10296752.html
Copyright © 2011-2022 走看看