• 神经元网络


    人工神经网络

    人工神经元是人工神经网络的基本构成元素,如下图所示, = [ 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=1mwixi,其向量形式为 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=

    {1v00v<0" role="presentation" style="position: relative;">{1v00v<0
    v=i=1mwixi,y={1v00v<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+eu1

    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+eueueu

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

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

    0.50.50.300.50.50.51" role="presentation" style="position: relative;">0.50.50.300.50.50.51
    \right] [0.50.50.50.50.30.501]
    其中每一列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 x1x2,求得分类函数为 v = − 1.3 x 1 − 0.5 x 2 v=-1.3x_1-0.5x_2 v=1.3x10.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小于预先设定的一个极小值,即网络收敛;或学习次数大于预先设定的值,即网络无法收敛

  • 相关阅读:
    侯捷 - C++ Startup 揭密:C++ 程序的生前和死后 (四)
    Debezium系列之:深入理解Kafka的消息代理
    暖心的虚拟恋人尽在烟雨树洞
    【Azure 应用服务】Azure Function 启用 Managed Identity后, Powershell Funciton出现 ERROR: ManagedIdentityCredential authentication failed
    浅识vue的虚拟DOM和渲染器
    C++实现telnet动态调试模块:将日志输出到telnet终端,通过telnet终端调用自定义注册的函数
    数据分析工具Polars实现CSV读写、排序、应用函数、lazy API
    MySQL-无锁读
    【安卓13】解决带GMS编译报super分区空间不足错误
    多御安全浏览安卓版升级尝鲜,新增下载管理功能
  • 原文地址:https://blog.csdn.net/qq_54423921/article/details/126091370