DL roam

来自Jack's Lab
(版本间的差异)
跳转到: 导航, 搜索
(直观印象)
(最小值)
第50行: 第50行:
  
 
== 最小值 ==
 
== 最小值 ==
 +
 +
先从识别一个数字来说,比如"2", 上述神经元可以认为是一个复杂的函数, 用一个手写体28x28的"2"的图片作为输入(x), 输出(y)是此图片可能是2的可能性. 输入一个"2"的图片,当然希望输出是[1] (一维向量), 期望值用y(x)来表示(这里有点反人类, 为毛不用y(x)作为神经网路输出值). 而神经网络输出值可以用a表示. 这里y(x)就是1, 写作y(x)方便扩展.
 +
 +
 +
希望 "2" 作为输入, [1,]作为输出, 如果不是这个情况呢, 比如输出了 0.1, 那么就需要说明下我们和期望值的'距离', 一般用C(w,b)= |y(x)-a|<sup>2</sup>. 直接相减行不? 应该是不行的. C(w,b)是一个函数, 如果这个函数在所有图片"2"为输入的值域上, C(w,b)大概就可能是一条直线, 哪里是最好值, 好像没法子定义好. 而二次方程图像是一个抛物线, 有一个底, 有一个最小值. 而C(w,b)定义了我们距离我们期望值的"距离"或者说"价格" 也或者说 "损耗". 总之, 是希望通过调整w,b这些参数, 得到一个神经网络的输出,使得C(w,b)这个Cost函数, 取值最小,也就是得到了最好结果.
 +
 +
 +
[[文件:Dl-grident-decendent.png]]
  
 
== 卷积 ==
 
== 卷积 ==

2018年7月3日 (二) 15:13的版本

目录

1 接触 Deep Learning

Jack 给我普及Deep learning已经是一两年前的事情了. 作为酒桌的谈资,自然是没往心里去. 直到我最爱的几个youtube频道相继开始聊起Deep learning的话题,才想起来探个究竟.

  • 3Blue1Brown on youtube [1]

2 直观印象

无论是jack给的连接还是youtube频道3Blue1Brown, 都是用下面这个例子来作为介绍deep learning.

直接跳到这个神经元结构示意图, 是下面的这个样子.

Deep learning hw fnn.png


什么意思呢, 就是假设每个手写数字都是28x28个像素的小图片, 总共784个点, 每个点的像素值按照一行行配列好,变成一个输入数组对应 input layer的784个神经元, 非常的直接和暴力.

神经元有四层, 中间两层称作 hidden layer.

最右边是输出层, 对应0到9 10个数字. 如果已经训练好了, 一个手写的'3'的图片,在输出层将会得到 3这个神经元的值最接近1(最大可能性), 其他神经元,理想状态, 可能性最接近0 (或-1).

而且,有一个事情必须提到,每个神经元有一个可能性的度量值, 从[-1, +1],或者从[0,1], 一层层传递下去,构成正向反馈.


好了, 一共有四层, 算是'深了', 所以叫 'deep learning', 而层数很少的呢叫 'shallow learning'.

每一层的每一个结点都全链接到下一层的所有神经元, 同样,靠右的神经元也全链接到上一层的所有神经元, 这样的结构叫 "FNN" 全链接神经网络.


那下一层的神经元怎么得到自己的 '可能性' 值, 有两个步骤. 第一步,线性影射值, Zl = wl-11al-11 1 + wl-12*al-12 + ... + b

这个式子的意思是有好几个:

  • 每个神经元都被上一层的神经元以某种权重激活 (activation). 权重值是w (weight)
  • 上一层的一个神经元, 贡献给下一层的某个神经元的线性值"z"(小写代表某一个神经元), 用z=a*w计算.
  • Z 是所有上一层的神经元对这层的一个神经元贡献的和, 加上一个bias值 (b)
  • 第一层的激活直接从数据, 这里是784个像素的值获得.


第二步是, 根据Z计算神经元的 "可能性" 值, Z可能是任何值, 但是可能性的值, 一般是[0,1] (或者[-1,1]), 这个步骤是非线性的, 也是最重要的, 神经元必须有非线性过程. 这个函数应该能把任意实数值影射到0-1这个区间( 或者 [-1,1]). 这样的函数有很多,最常见的是 σ

00.jpg


所谓训练神经网络,就是找到每一层每一个神经元里所有wi和b 的最合适的值.

3 最小值

先从识别一个数字来说,比如"2", 上述神经元可以认为是一个复杂的函数, 用一个手写体28x28的"2"的图片作为输入(x), 输出(y)是此图片可能是2的可能性. 输入一个"2"的图片,当然希望输出是[1] (一维向量), 期望值用y(x)来表示(这里有点反人类, 为毛不用y(x)作为神经网路输出值). 而神经网络输出值可以用a表示. 这里y(x)就是1, 写作y(x)方便扩展.


希望 "2" 作为输入, [1,]作为输出, 如果不是这个情况呢, 比如输出了 0.1, 那么就需要说明下我们和期望值的'距离', 一般用C(w,b)= |y(x)-a|2. 直接相减行不? 应该是不行的. C(w,b)是一个函数, 如果这个函数在所有图片"2"为输入的值域上, C(w,b)大概就可能是一条直线, 哪里是最好值, 好像没法子定义好. 而二次方程图像是一个抛物线, 有一个底, 有一个最小值. 而C(w,b)定义了我们距离我们期望值的"距离"或者说"价格" 也或者说 "损耗". 总之, 是希望通过调整w,b这些参数, 得到一个神经网络的输出,使得C(w,b)这个Cost函数, 取值最小,也就是得到了最好结果.


Dl-grident-decendent.png

4 卷积

个人工具
名字空间

变换
操作
导航
工具箱