应用神经网络的基本过程

神经网络搭建和使用基本过程如下:

准备数据:采集大量“特征/标签”数据(使用神经网络之前需要准备的数据)
搭建网络:搭建神经网络结构
优化参数:训练网络获取最佳参数(反转)
应用网络:将网络保存为模型,输入新数据,输出分类或预测结果(前传)(神经网络已经搭建好了,可以应用了)

其中,对于神经网络的设计过程最关键的就是搭建网络优化参数,后续对神经网络的设计过程将以这两步骤为主。


神经网络设计过程

鸢尾花的分类过程:

将特征 [花萼长、花萼宽、花瓣长、花瓣宽] 输入神经网络,输出每个种类的可能性大小(分类的百分比)

其中神经网络里的每个小球,就是神经元

1943年,英国心里学家麦卡洛克和数据加皮茨,给出了神经元的计算模型(MP模型)

去掉非线性函数,简化的MP模型如下:

因此,y=x*w+b,就是神经网络的传播形式,其中

x为输入:[花萼长、花萼宽、花瓣长、花瓣宽] 1x4的数据
y为输出:[狗尾草鸢尾、杂色鸢尾、佛吉尼亚鸢尾] 1x3的数据
w为权重:4x3的数据
b为偏置项

(1)搭建网络

首先:初始化随机生成w与b
w:

-0.8 -0.34 -1.4
0.6 1.3 0.25
0.5 1.45 0.9
0.65 0.7 -1.2

b:

2.52 -3.1 5.62

(2)优化参数

目前基本上已经搭建好了神经网络,后续开始通过“特征/标签”的数据开始训练网络

输入一组数据:
特征:[花萼长、花萼宽、花瓣长、花瓣宽]=[5.8,4.0,1.2,0.2],即x=[5.8,4.0,1.2,0.2]
标签:0 狗尾草鸢尾

将特征输入到建好的神经网络里,按照传播形式y=x*w+b,通过计算得到:y=[1.01,2.01,-0.66]

这个过程称为前向传播

从输出结果里y=[1.01,2.01,-0.66]来看,最大可能性是1 杂色鸢尾 而不是标签0 狗尾草鸢尾
原因就是最初的参数W和b是随机生成的,也就是说目前的结果是蒙的

损失函数(loss function):预测值(y)与标准答案(y_)的差距

损失函数可以定量判断W和b的优势,当损失函数输出最小时,参数W、b会出现最优值
常用的损失函数,均方误差:

目的:找到一组参数W和b,使得随时函数最小
梯度:函数对个参数求偏导后的向量

函数梯度下降方向就是函数减小的方向

梯度下降法(Gradient descent):沿损失函数梯度下降的方向,寻找损失函数的最小值,得到最优参数的方法

学习率(learning rate,lr):当学习率设置的过小时,收敛过程将变得十分缓慢,而当学习率设置过大时,梯度可能会在最小值附近来回震荡,甚至无法收敛。

反向传播:从前向后,逐层求损失函数对每层神经元参数的偏导数,迭代更新左右参数

eg:损失函数 ,  

参数w随机初始化为5,学习率(超参数)为0.2,则
1次  w=5                5-0.2*(2*5+2)=2.6
2次  w=2.6             2.6-0.2*(2*2.6+2)=1.16
3次  w=1.16           1.16-0.2*(2*1.16+2)=0.296
4次  w=0.296
......

依次进行反向传播,可以找到当w=-1时,损失函数最小,则w=-1就是参数最优值

(3)案例

在pycharm里输入如下代码(其中tensorflow版本为2.0以上)

初始设定w为0.5,学习率lr为0.2,迭代次数epoch为40,最后打印出损失函数的结果

import tensorflow as tfw = tf.Variable(tf.constant(5, dtype=tf.float32))
lr = 0.2
epoch = 40for epoch in range(epoch):  # for epoch 定义顶层循环,表示对数据集循环epoch次,此例数据集数据仅有1个w,初始化时候constant赋值为5,循环100次迭代。with tf.GradientTape() as tape:  # with结构到grads框起了梯度的计算过程。loss = tf.square(w + 1)grads = tape.gradient(loss, w)  # .gradient函数告知谁对谁求导w.assign_sub(lr * grads)  # .assign_sub 对变量做自减 即:w -= lr*grads 即 w = w - lr*gradsprint("After %s epoch,w is %f,loss is %f" % (epoch, w.numpy(), loss))# lr初始值:0.2   请自改学习率  0.001  0.999 看收敛过程
# 最终目的:找到 loss 最小 即 w = -1 的最优参数w

从20次左右可以看出w基本上接近-1,损失函数基本上为0

After 0 epoch,w is 2.600000,loss is 36.000000
After 1 epoch,w is 1.160000,loss is 12.959999
After 2 epoch,w is 0.296000,loss is 4.665599
After 3 epoch,w is -0.222400,loss is 1.679616
After 4 epoch,w is -0.533440,loss is 0.604662
After 5 epoch,w is -0.720064,loss is 0.217678
After 6 epoch,w is -0.832038,loss is 0.078364
After 7 epoch,w is -0.899223,loss is 0.028211
After 8 epoch,w is -0.939534,loss is 0.010156
After 9 epoch,w is -0.963720,loss is 0.003656
After 10 epoch,w is -0.978232,loss is 0.001316
After 11 epoch,w is -0.986939,loss is 0.000474
After 12 epoch,w is -0.992164,loss is 0.000171
After 13 epoch,w is -0.995298,loss is 0.000061
After 14 epoch,w is -0.997179,loss is 0.000022
After 15 epoch,w is -0.998307,loss is 0.000008
After 16 epoch,w is -0.998984,loss is 0.000003
After 17 epoch,w is -0.999391,loss is 0.000001
After 18 epoch,w is -0.999634,loss is 0.000000
After 19 epoch,w is -0.999781,loss is 0.000000
After 20 epoch,w is -0.999868,loss is 0.000000
After 21 epoch,w is -0.999921,loss is 0.000000
After 22 epoch,w is -0.999953,loss is 0.000000
After 23 epoch,w is -0.999972,loss is 0.000000
After 24 epoch,w is -0.999983,loss is 0.000000
After 25 epoch,w is -0.999990,loss is 0.000000
After 26 epoch,w is -0.999994,loss is 0.000000
After 27 epoch,w is -0.999996,loss is 0.000000
After 28 epoch,w is -0.999998,loss is 0.000000
After 29 epoch,w is -0.999999,loss is 0.000000
After 30 epoch,w is -0.999999,loss is 0.000000
After 31 epoch,w is -1.000000,loss is 0.000000
After 32 epoch,w is -1.000000,loss is 0.000000
After 33 epoch,w is -1.000000,loss is 0.000000
After 34 epoch,w is -1.000000,loss is 0.000000
After 35 epoch,w is -1.000000,loss is 0.000000
After 36 epoch,w is -1.000000,loss is 0.000000
After 37 epoch,w is -1.000000,loss is 0.000000
After 38 epoch,w is -1.000000,loss is 0.000000
After 39 epoch,w is -1.000000,loss is 0.000000

学习来源:人工智能实践:Tensorflow笔记

【神经网络】2. 神经网络设计过程相关推荐

  1. 神经网络中,设计loss function有哪些技巧?

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:视学算法 神经网络中,设计loss function有哪 ...

  2. 如何绘制神经网络结构图,如何设计神经网络结构

    如何用Tensorflow 快速搭建神经网络 在MNIST数据集上,搭建一个简单神经网络结构,一个包含ReLU单元的非线性化处理的两层神经网络. 在训练神经网络的时候,使用带指数衰减的学习率设置.使用 ...

  3. 如何设计神经网络结构图,神经网络设计与实现

    如何用Tensorflow 快速搭建神经网络 在MNIST数据集上,搭建一个简单神经网络结构,一个包含ReLU单元的非线性化处理的两层神经网络. 在训练神经网络的时候,使用带指数衰减的学习率设置.使用 ...

  4. 神经网络结构设计,神经网络架构设计

    什么是5A智能建筑 5A智能建筑:指通讯自动化(CA).楼宇自动化(BA).办公自动化(OA).消防自动化(FA)和保安自动化(SA)集于一体的智能化建筑. 5A智能建筑具体包括的系统有:计算机管理系 ...

  5. 图像的处理原理:CNN(卷积神经网络)的实现过程

    了解一定的技术原理,对产品经理而言是有益处的.本文讲述的图像处理的基本思路,希望大家能够对当前图像处理技术有一定了解. 现在有个概念叫泛产品经理,这个概念本身是好的,核心说的是产品思维,但是在工作上我 ...

  6. 花书+吴恩达深度学习(十三)卷积神经网络 CNN 之运算过程(前向传播、反向传播)

    目录 0. 前言 1. 单层卷积网络 2. 各参数维度 3. CNN 前向传播反向传播 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常开心的~ 花书+吴恩达深度学习(十)卷积神经网络 ...

  7. rbf神经网络自适应控制matlab仿真,机械系统RBF神经网络控制:设计、分析及Matlab仿真(英文)...

    机械系统RBF神经网络控制:设计.分析及Matlab仿真(英文) 作者:刘金琨 著 出版时间:2013年 内容简介 <机械系统RBF神经网络控制:设计.分析及Matlab仿真(英文)>从M ...

  8. 神经网络前向传播过程,神经网络反向传播

    正向传播反向传播是什么? 题主问的应该是神经网络中的问题.正向传播是指数据从X传入到神经网络,经过各个隐藏层得到最终损失的过程. 反向传播主要是针对神经网络优化的过程中进行,在L端计算总的损失函数,然 ...

  9. 神经网络 卷积神经网络_如何愚弄神经网络?

    神经网络 卷积神经网络 Imagine you're in the year 2050 and you're on your way to work in a self-driving car (pr ...

  10. 用于分类的神经网络算法,神经网络算法通俗解释

    神经网络是什么 神经网络是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型.这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的. 生物神经网络 ...

最新文章

  1. html怎么在图片上加文字_怎么把图片文字转换成word文档
  2. centos 安装openoffice (办公软件 WPS)
  3. android 录像 源代码,android安卓视频录制摄像拍摄源码(测试可用)
  4. [算法练习] 把字符串转换成整数
  5. python3扬州大学校园网认证登录与下线
  6. 无痛学习ISAC(三)
  7. 关注点分离(Separation of concerns, SoC)
  8. Latex中的括号用法总结
  9. 数列极限导出重要无理数
  10. 剑客之剑系列续篇:六脉神剑——PyCharm使用宝典
  11. 计算机汉字录入试题,上机试题:汉字录入题.doc.doc
  12. 15ubuntu20.04离线安装openssh8.9.p1
  13. Android系统篇之—-Android中的run-as命令引出升降权限的安全问题(Linux中的setuid和setgid)
  14. graylog+kafka+zookeeper(单机测试及源码),graylog收集kafka(脚本创建发布订阅方式)存储的消息(四)
  15. 香港主机CDN加速,让您的网站速度飙升
  16. vue----前端精选50道面试题---一个小白的孤芳自赏
  17. 信息系统项目管理:项目经理担任什么样的角色?
  18. BUU LFI COURSE 1 WP
  19. 【NOIP模拟】德拉曼兹路基
  20. 通告功能、公告、消息(站内短信)、通告 (建表思路与功用)

热门文章

  1. 华为虚拟专网客户端SecoClient报错“接受返回码超时”故障
  2. 基于javaweb的物资配送管理系统_基于JAVA的物流配送管理系统毕业设计书
  3. 580刷590bios_AMD rx470/480/570/580/590高端技术公版/非公强刷BIOS教程教学-没差老师出品...
  4. 计算机保研面试题总汇(网上搜集的题 自己写的答案)
  5. python+java家庭理财个人理财管理系统记账系统
  6. php留言板的实验步骤,php留言板实训报告.docx
  7. (四)BP神经网络预测(上)
  8. linux用dd命令刻录u盘,巧用linux dd命令刻录启动U盘
  9. python中模运算_Python中的模运算
  10. macOS分辨率修改器哪个好用?