当前位置: 首页 > article >正文

手搓人工神经网络

手搓人工神经网络

人工神经网络实质上就是一个含参的函数。在使用时直接计算出结果,在训练时调整参数。

我们先不看真正的人工神经网络,考虑一个简单的一次函数:
y = k x y = kx y=kx
现在给你一组数据,这组数据反映了一辆匀速行驶的汽车的时间(x)和路程(y)的关系:

时间 路程
1 60
2 120
3 180
4 240

现在需要设置上述一次函数的参数(k),使得当这个函数的自变量(x)为时间时,函数值(y)是路程。相信大家一眼就能看出来 k = 60 k=60 k=60

看出来 k = 60 k=60 k=60 的过程就是训练,计算 y ∣ x = t y | _{x=t} yx=t (t是常数)的过程就是预测。

考虑一个简单的人工神经网络,如图所示:
在这里插入图片描述

我们来看这里面的参数: x i j x_{ {i}{j}} xij 表示第 j j j 层第 i i i 个输入, y i j y_{ {i}{j}} yij 表示第 j j j 层第 i i i 个输出, w i j t w_{ijt} wijt 表示第 t t t 层第 i {i} i 个输入到第 j j j层的输出的权重。

当我们向网络输入一个数据后(即设置 x 11 x_{11} x11 x 21 x_{21} x21 的值),我们就可以得到一个输出( y 12 y_{12} y12 y 22 y_{22} y22 )。这个输出的计算方法如下:

  1. 求第一层的输出:

{ y 11 = f ( w 111 x 11 + w 211 x 21 ) y 21 = f ( w 121 x 11 + w 221 x 21 ) \begin{cases} y_{11} = f(w_{111}x_{11} + w_{211}x_{21})\\ y_{21} = f(w_{121}x_{11} + w_{221}x_{21}) \end{cases} { y11=f(w111x11+w211x21)y21=f(w121x11+w221x21)

  1. 将第一层的输出作为第二层的输出传入:
    { x 12 = y 11 x 22 = y 21 \begin{cases} x_{12} = y_{11} \\ x_{22} = y_{21} \end{cases} { x12=y11x22=y21

  2. 求第二层的输出:
    { y 12 = f ( w 112 x 12 + w 212 x 22 ) y 22 = f ( w 122 x 12 + w 222 x 22 ) \begin{cases} y_{12} = f(w_{112}x_{12} + w_{212}x_{22})\\ y_{22} = f(w_{122}x_{12} + w_{222}x_{22}) \end{cases} { y12=f(w112x12+w212x22)y22=f(w122x12+w222x22)

最终网络的输出结果就是 ( y 12 , y 22 ) (y_{12}, y_{22}) (y12,y22)

在这里面,函数 f ( x ) f(x) f(x) 称为激活函数。为什么需要激活函数呢?我们考虑若没有激活函数的情况:
{ y 12 = w 112 x 12 + w 212 x 22 = w 112 ( w 111 x 11 + w 211 x 21 ) + w 212 ( w 121 x 11 + w 221 x 21 ) y 22 = w 122 x 12 + w 222 x 22 = w 122 ( w 111 x 11 + w 211 x 21 ) + w 222 ( w 121 x 11 + w 221 x 21 ) \begin{cases} y_{12}=w_{112}x_{12}+w_{212}x_{22}=w_{112}(w_{111}x_{11}+w_{211}x_{21})+w_{212}(w_{121}x_{11}+w_{221}x_{21})\\ y_{22}=w_{122}x_{12}+w_{222}x_{22}=w_{122}(w_{111}x_{11}+w_{211}x_{21})+w_{222}(w_{121}x_{11}+w_{221}x_{21}) \end{cases} { y12=w112x12+w212x22=w


http://www.kler.cn/a/467635.html

相关文章:

  • 学英语学压测:02jmeter组件-测试计划和线程组ramp-up参数的作用
  • SQL中聚类后字段数据串联字符串方法研究
  • 大数据面试笔试宝典之大数据运维面试
  • QML使用Popup实现弹出Message
  • 部署项目添加工程名的步骤
  • I2C(一):存储器模式:stm32作为主机对AT24C02写读数据
  • Introducing Optimization
  • 基于生成式对抗网络(GAN)的前沿研究与应用
  • 单片机-独立按键矩阵按键实验
  • [Qt] 输入控件 | Line | Text | Combo | Spin | Date | Dial | Slider
  • python基于diagrams库绘制系统架构图
  • 基于Redis有序集合实现滑动窗口限流
  • 【C#特性整理】C#特性及语法基础
  • C# 找出给定三角形的所有角度(Find all angles of a given triangle)
  • 银行系统安全用电解决方案
  • Day29:continue 语句
  • 什么是.net framework,什么是.net core,什么是.net5~8,版本对应关系
  • linux 系统配置ip
  • Linux 内核中网络接口的创建与管理
  • win11 vs2022 opencv 4.10使用vs Image Watch插件实时可视化内存mat对象
  • 洛谷P5318 【深基18.例3】查找文献(c嘎嘎)
  • 常见的框架漏洞
  • 【OceanBase】使用 Superset 连接 OceanBase 数据库并进行数据可视化分析
  • vuedraggable 选项介绍
  • SSM-SpringMVC
  • 基于 Python Django 的花卉商城系统的研究与实现