• 神经元网络


    人工神经网络

    人工神经元是人工神经网络的基本构成元素,如下图所示, = [ x 1 , x 2 , x 3 . . . x m ] T , W = [ w 1 , w 2 , . . . w m ] T =\left[ x_1,x_2,x_3...x_m \right] ^T,W=\left[ w_1,w_2,...w_m \right] ^T =[x1​,x2​,x3​...xm​]T,W=[w1​,w2​,...wm​]T为连接权,于是网络输入 u = ∑ i = 1 m w i x i u=\sum_{i=1}^m{w_ix_i} u=∑i=1m​wi​xi​,其向量形式为 u = W T X u=W^TX u=WTX
    在这里插入图片描述

    上图为单层感知器神经元模型,其中m为输入神经元的个数
    v = ∑ i = 1 m w i x i , y = { 1 v ≥ 0 0 v < 0 v=\sum_{i=1}^m{w_ix_i},y=

    {1v≥00v<0" role="presentation" style="position: relative;">{1v≥00v<0
    v=∑i=1m​wi​xi​,y={1v≥00v<0​

    激活函数也乘激励函数,活化函数,用来执行对神经元所获得的网络输入的变换,一般有以下四种:

    1. 线性函数 f ( u ) = k u + c f(u)=ku+c f(u)=ku+c

    2. 非线性斜面函数 f ( u ) = { γ , u ≥ θ k u , ∣ u ∣ < θ − γ , u ≤ − θ f\left( u \right) =

      {γ,u≥θku,|u|<θ−γ,u≤−θ" role="presentation" style="position: relative;">{γ,u≥θku,|u|<θ−γ,u≤−θ
      f(u)=⎩ ⎨ ⎧​γ,u≥θku,∣u∣<θ−γ,u≤−θ​
      其中 θ , γ \theta ,\gamma θ,γ为非负实数, γ \gamma γ称为饱和值,即 γ \gamma γ为神经元的最大输出

    3. 阈值函数/阶跃函数
      f ( u ) = { β , u > θ − γ , u ≤ θ f\left( u \right) =

      {β,u>θ−γ,u≤θ" role="presentation" style="position: relative;">{β,u>θ−γ,u≤θ
      f(u)={β,u>θ−γ,u≤θ​

    4. 在logistic回归中介绍过sigmoid函数,该函数将区间负无穷到正无穷映射到(0,1)
      sigmoid函数的公式为:
      f ( u ) = 1 1 + e − u f\left( u \right) =\frac{1}{1+e^{-u}} f(u)=1+e−u1​

    5. tanh函数讲教育sigmoid函数要常见一些,该函数将区间负无穷到正无穷映射到(-1,1),其公式为:
      f ( u ) = e u − e u e u + e − u f\left( u \right) =\frac{e^u-e^u}{e^u+e^{-u}} f(u)=eu+e−ueu−eu​

    例:
    采用单一感知器神经元解决简单的分类的问题:将四个输入向量分为两类,其中两个向量对应的目标值为1,另外两个向量对应的目标值为0,即输入向量构成矩阵:

    [ − 0.5 − 0.5 0.3 0 − 0.5 0.5 − 0.5 1 ] \left[

    −0.5−0.50.30−0.50.5−0.51" role="presentation" style="position: relative;">−0.5−0.50.30−0.50.5−0.51
    \right] [−0.5−0.5​−0.50.5​0.3−0.5​01​]
    其中每一列1列是一个输入的取值,且目标分类向量T=[1,1,0,0]。试预测新输入向量 p = [ − 0.5 , 0.2 ] T p=\left[ -0.5,0.2 \right] ^T p=[−0.5,0.2]T的目标值:

    from sklearn.linear_model import Perceptron
    import numpy as np
    x0=np.array([[-0.5,-0.5,0.3,0.0],[-0.5,0.5,-0.5,1.0]]).T
    y0=np.array([1,1,0,0])
    md=Perceptron().fit(x0,y0)#构造并拟合模型
    print("模型系数和常数项分别为:",md.coef_,",",md.intercept_)
    print("模型精度:",md.score(x0,y0))#模型检验
    print("预测值为:",md.predict([[-0.5,0.2]]))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    记两个指标变量分别为 x 1 , x 2 x_1,x_2 x1​,x2​,求得分类函数为 v = − 1.3 x 1 − 0.5 x 2 v=-1.3x_1-0.5x_2 v=−1.3x1​−0.5x2​。新输入向量p的目标值为1

    BP神经网络

    BP神经网络最大优点是具有极强的非线性映射能力,他主要用于以下四个方面

    1. 函数逼近。用输入向量和相应的输出向量训练一个网络以逼近某个函数
    2. 模式识别
    3. 预测
    4. 数据压缩

    BP神经网络的具体流程如下:
    (1) 初始化,给各连接权及阈值赋予[-1,1]的随机值
    (2) 随机选择一模式对 X 0 = [ x 1 0 , x 2 0 . . . . x n 0 ] , Y 0 = [ y 1 0 , y 2 0 , . . . y n 0 ] X_0=\left[ x_{1}^{0},x_{2}^{0}....x_{n}^{0} \right] ,Y_0=\left[ y_{1}^{0},y_{2}^{0},...y_{n}^{0} \right] X0​=[x10​,x20​....xn0​],Y0​=[y10​,y20​,...yn0​]提供给网络

    (3)用输入模式、连接权,和國值,计算中间层各单元的输入,然后用s通过活函数计算中间层各单元的输出。
    (4)用中间层的输出;连接权。和阔值计算输出层各单元的输入,然后用。过激活函数计算输出层各单元的响应d。
    (5)用希望输出模式、网络实际输出计算输出层各单元一般化误差。。
    (6)用连接权g、输出层一般化误差、中间层输出,计算中间层各单元一般化误
    的元一般化误差c、中间层各单元输出,修正连接权u,和阈值。人各单元输入,修正连接权和阙值。
    (7)重新从m个学习模式中随机选取一个模式对,即返回步骤3,直至网络全局误差函数E小于预先设定的一个极小值,即网络收敛;或学习次数大于预先设定的值,即网络无法收敛

  • 相关阅读:
    HarmonyOS应用开发学习历程(1)初识DevEco Studio
    微服务分布式开源架构是什么?
    ArrayList中放的是一个对象,如何同时根据对象中的三个字段对List进行排序
    Python划分训练集与测试集KFold交叉验证
    解密Elasticsearch:深入探究这款搜索和分析引擎
    面试题:熟悉设计模式吗?谈谈简单工厂模式和策略模式的区别
    linux上安装nginx
    登录验证的步骤
    [Ajax]初始Ajax
    echarts的双向柱形图的legend图例不显示的原因是,sereies里的数据,没有写name属性,必须要写,图例才会出现
  • 原文地址:https://blog.csdn.net/qq_54423921/article/details/126091370