神经网络初探

3Blue1Brown@TOC

3Blue1Brown

P_ython 3.7

深度学习之神经网络的结构

神经网络的变种有很多
盛京网络的变种有很多,现在我们只讨论最简单的多层感知器(MLP),最贱的就能来识别手写数字。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
现在我们跳到最后一层,这一层的10个神经元分别代表0-9这十个数字。他们的激活值同理处在0-1之间
在这里插入图片描述
网络中间有几层隐藏层,可以看做是一个大黑箱,里面进行着处理识别数字的具体工作。
在这里插入图片描述
结构选择两层隐藏层的理由一会儿解释,选择16个神经元无非显得好看罢了。
神经网络运作时,上一层的激活值将决定下一层的激活值,神经网络处理信息的核心机制正是一层的激活值是通过怎样的运算,算出下一层的激活值的,他是模仿生物的神经元,某些神经元的激发,就会促使另一些神经元激发。

当前占使得神经网络已经训练好了,可以识别数字,我给你解释下是什么意思:
这表示,如果你在神经网络输入层的784个神经元处输入了784个代表输入图像各像素的灰度值。
在这里插入图片描述
那么这层激活的图案会让下层的激活值产生某些特殊的图案
在这里插入图片描述
再让下层的产生特殊的图案。
在这里插入图片描述
最终在输出层得到某些结果。
在这里插入图片描述
而输出层最靓的那个神经元就表示盛京网络的选择,它认为输入图像里写着这个数字。

为什么要分层?
在我介绍网络每层间如何影响 训练过程的数学原理前,
我们先讨论下 凭什么我们觉得这种层状结构可以做到智能判断。我们期望这些中间层最好能做些什么?
人类在识别的时候,把数字拆分成各个部分
在这里插入图片描述
理想的情况下,我们希望倒数第二层中的各个神经元能分别对应上一个笔画部件
在这里插入图片描述
这样我们在输入一个9或者8这种带圈的数字时,某一个神经元中的激活值就会接近1,而我并不特指某种样子的圈
在这里插入图片描述
这样一来,从第三层到最后一层,我们只需要学习哪些部件能组合出哪个数字即可。

那么,要如何识别这些部件那?甚至哪些部件才算是正确的?
识别圆圈的任务同理可以拆分成更细微的问题。
在这里插入图片描述
比如1,4,7中的这种长边,或者把它当做几条短边组合起来的图案也可以。
在这里插入图片描述
于是我们希望也许网络第二层的各个神经元就能对应上这种各种各样的短边。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
很多识别工作都能像这样拆分成小块。比如语音识别,就是从原音频中识别出特殊的声音。组合成特定的音节,再组合成短语,以及更加抽象的概念。
上一层的激活值到底如何决定下一层中的激活值
每一层间的连线是干嘛用的?
我们需要设计一个机制,可以把像素拼成短边,把短边拼成图案,把图案拼成数字。
在这里插入图片描述
我们来设计 让第二层中的这一个神经元能够正确识别图像中的这一块区域里 是否存在一条边。
在这里插入图片描述
现在我们就需要知道这个网络的参数,你应该如何调整网络上的旋钮开关,才能让它标识出这种图案。
在这里插入图片描述
要么是别图案,要么是几条边组合成圆圈之类。我们需要给这个神经元和第一层所有神经元的每一条接线都附上一个权重值。
在这里插入图片描述
然后我们使用第一层所有的激活函数,和它们对应权重值一起,算出它们的加权和。
在这里插入图片描述
把这些权重看成一个表格更好理解,把正的权重值标记成绿色,负的标记成红色,颜色越暗,就大致表示它的权重越接近于0
在这里插入图片描述
如果我们把关注区域的权重赋为正值,而其他所有的权重值一律赋值为0,这样一来,对所有的对所有的像素值取加权和,
在这里插入图片描述
就只会累加我们关注区域的像素值了,
在这里插入图片描述
此时如果你真的想识别出这里是否存在一条边。你只需要给周围一圈的像素赋予负的权重,这样中间的像素亮,周围的像素暗时,加权和就能达到最大。
在这里插入图片描述
这样计算出来的加权和可以是任意大小
在这里插入图片描述
但这个网络中我们需要激活值都处在0-1之间,那么我们就可以顺其自然的把这个加权和输进某个函数,把这条实数轴挤压进0-1区间内。
在这里插入图片描述
其中有一个叫sigmoid(又叫逻辑回归曲线)的函数非常常用。它能把非常大的负值变成接近0,非常大的正值变成接近1,在取值0附近则是平稳增长的。
在这里插入图片描述 所以这个神经元中的中的激活值实际上就是对一个加权和到底有多正的打分。
在这里插入图片描述
但是,有时即使加权和大于0时,你也不想把神经元点亮。
在这里插入图片描述
在这里插入图片描述
我们只需要在加权和之后加上一个负10之类的数,再把它送进sigmoid压缩/映射函数即可。这个附加数就叫做偏置
在这里插入图片描述
总之,权重告诉你这个第二层的神经元关注什么样的像素图案。偏置则告诉你加权和得多大才能让神经元的激发变得有意义。

我们这就解说完了一个神经元。但第二层的每一个神经元都会和第一层的全部784个神经元相连接。每一个的784个接线上都带着一个权重。而且每一个神经元都会在计算自己的加权和后加上自己的偏置。再通过sigmoid压缩输出自己的结果。

这层隐含层的16个神经元就需要总计784*16个权重 16个偏置值。
在这里插入图片描述
这仅仅是第一层和第二层的连接,别的层的连接还有他们分别自带的权重和偏置。一套下来整个网络一共会用上奖金13000个权重加偏置,相当于这个网络上有13000多个旋钮开关让你调整,从而带来不一样的结果。
在这里插入图片描述
所以我们在讲机器学习时,其实在讲,电脑应该如何设置这一大坨的数字参数,才能让它正确的解决问题。
在这里插入图片描述
想象一下你自己手动调整这些权重还有偏置参数,让第二层识别短边,第三层识别图案,比起把网络完全当做一个黑箱,我个人觉得这么考虑更好。毕竟当网络的输出和期望出了偏差的时候,如果你一定程度上了解了这些权重和偏置的意义。那么你再尝试对结构进行修正就有了出发点了。
或许你的神经网络能输出结果,但过程和你想的不一样,那么深挖权重和偏置的实际意义就可以有效挑战你的假设,进而探索出所有的可能的解决方案。

简洁的表示方法:
我们把某一层中所有的激活函数统一成一列向量,再把它和下一层间所有的权重放到一个矩阵中,矩阵第n行就是这一层的所有神经元和下一层第n个神经元间所有连线的权重。
这样权重矩阵和向量乘积的第n项就是这一层所有的激活函数和下一层第n个神经元连线权重的加权和。
在这里插入图片描述
想了解线代的本质可以看之前的视频尤其是第三章。

表达偏置值的时候,我们不会把一个个值都领出来单独讨论,我们也会把它们都放到一个向量里,然后和之前的矩阵乘法的结果相加。
最后一步,我们把整个表达式用一个sigmoid包起来, 在这里插入图片描述
在这里插入图片描述
这种写法也让代码简洁很多。

还记得之前我让大家把神经元看作是数字的容器,实际上,神经元中装着的值是取决于你的输入图像的。所以我们把神经元看作是一个函数才更准确它输入的是上一层所有神经元的输出,是一个0-1之间的值。其实整个神经网络就是一个函数,一个输入784个值,输出10个值的函数,不过这个函数极其复杂,用了13000个权重参数偏置参数来识别特殊图案。不复杂不行
在这里插入图片描述
在这里插入图片描述
神经网络是如何通过数据来获得合适的权重和偏差的?下集讲

现在基本不用sigmoid函数了,过时了,ReLU(线性整流函数)更好训练,这种函数就是返回0和a的最大值,在、其中a就是函数的输入。
在这里插入图片描述
神经元之所以用这种函数一部分是为了模仿生物学上的神经元什么时候会激发,所以当超过一个阈值的时候,ReLU就和恒定函数一样,而没过这个阈值,那么就不激发,输出0
在这里插入图片描述
sigmoid很难训练
在这里插入图片描述

功能快捷键来设计

撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G

合理的创建标题,有助于目录的生成

直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

如何改变文本的样式

强调文本 强调文本

加粗文本 加粗文本

标记文本

删除文本

引用文本

H2O is是液体。

210 运算结果是 1024.

插入链接与图片

链接: link.

图片: Alt

带尺寸的图片: Alt

居中的图片: Alt

居中并且带尺寸的图片: Alt

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

如何插入一段漂亮的代码片

博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

// An highlighted block
var foo = 'bar';

生成一个适合你的列表

  • 项目
    • 项目
      • 项目
  1. 项目1
  2. 项目2
  3. 项目3
  • 计划任务
  • 完成任务

创建一个表格

一个简单的表格是这么创建的:

项目Value
电脑$1600
手机$12
导管$1

设定内容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列第二列第三列
第一列文本居中第二列文本居右第三列文本居左

SmartyPants

SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

TYPEASCIIHTML
Single backticks'Isn't this fun?'‘Isn’t this fun?’
Quotes"Isn't this fun?"“Isn’t this fun?”
Dashes-- is en-dash, --- is em-dash– is en-dash, — is em-dash

创建一个自定义列表

Markdown
Text-to- HTML conversion tool
Authors
John
Luke

如何创建一个注脚

一个具有注脚的文本。1

注释也是必不可少的

Markdown将文本转换为 HTML

KaTeX数学公式

您可以使用渲染LaTeX数学表达式 KaTeX:

Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n1)!nN 是通过欧拉积分

Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t   . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=0tz1etdt.

你可以找到更多关于的信息 LaTeX 数学表达式here.

新的甘特图功能,丰富你的文章

Mon 06 Mon 13 Mon 20 已完成 进行中 计划一 计划二 现有任务 Adding GANTT diagram functionality to mermaid
  • 关于 甘特图 语法,参考 这儿,

UML 图表

可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图::

张三 李四 王五 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 李四想了很长时间, 文字太长了 不适合放在一行. 打量着王五... 很好... 王五, 你怎么样? 张三 李四 王五

这将产生一个流程图。:

链接
长方形
圆角长方形
菱形
  • 关于 Mermaid 语法,参考 这儿,

FLowchart流程图

我们依旧会支持flowchart的流程图:

Created with Raphaël 2.2.0 开始 我的操作 确认? 结束 yes no
  • 关于 Flowchart流程图 语法,参考 这儿.

导出与导入

导出

如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

导入

如果你想加载一篇你写过的.md文件或者.html文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。


  1. 注脚的解释 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值