把神经元层层叠起,神经网络
前面我们学过,一个神经元把输入按权重相加,决定要不要发出信号。可单单一个神经元只能做很简单的判断。那要是把许多神经元层层叠起、连起来呢? 出乎意料,它们能学到复杂得多的模式。这就是神经网络。
把神经元层层连起来
前面我们学过一个神经元。
它把输入按权重汇起来相加,
这个和超过一个标准就发出信号。
简单,判断也就那么简单。
只能用一条线把东西分开。
可要是把一个神经元的输出
接到另一个神经元的输入呢?
神经元之间互相传递信号,
就能一步步搭出更大的图景。
点神经元,一个个点亮、连起来。点亮的神经元之间长出信号线,简单的神经元就聚成一张网。
每个神经元仍旧简单。
变的是它们连起来了。
一个神经元的输出
成了下一个神经元的输入,
所以一个看不到的,
一群一起就开始看得到。
不过比起乱连,
排成行连起来要整齐得多。
这样的行就叫做层。
输入层、隐藏层、输出层
把神经元排成行,就成了层。
最前面那行接收来自外面的值。
这叫做输入层。
最后面那行给出最终答案。
这叫做输出层。
夹在中间的那些行,
就是干活最多的隐藏层。
信号从输入层出发,
依次穿过各层,流到输出层。
点按钮,让信号一层一层往前流。从输入层经隐藏层到输出层,依次点亮。
信号只往前流。
每一层接收上一层的输出,
按自己的方式重新算一遍再传下去。
前面的层察看小碎片,
后面的层把碎片汇起来,
认出更大的形状。
层越深,
抓到的特征就越抽象。
不过这里藏着一个陷阱。
中间得有个弯曲步骤
光叠层好像就够了,对吧?
可有个陷阱。
要是每层只是相加相乘,
那就是笔直的线性变换。
笔直的变换不管串多少个,
结果还是又一条笔直的直线。
叠一百层也跟一层一样。
所以层与层之间,
必须有个把信号轻轻弯一下的步骤。
把弯曲步骤关掉、打开来比较。关掉时叠层并成一条直线,打开时弯曲的线留了下来,形状变得丰富。
差别一下就看出来了吧。
关掉弯曲步骤,
不管叠多少层,最终都是一条直线。
能做的跟一层一样。
打开弯曲步骤,
每一层信号都弯一点点,
就出现了直线画不出的形状。
正是靠这个弯曲步骤,
叠层才有了意义。
层越多,模式越复杂
来加上几层带弯曲步骤的层吧?
只有一层时,一条笔直的线
顶多把世界分成两半。
加一层,弯曲的线汇起来,
就能画出折弯的边界。
再多叠几层,
连圆圈、弯弯曲曲的边界,
越来越复杂的模式都能学到。
这就是神经网络厉害的原因。
点添加层的按钮。层少时边界是直的,越加越多,虚线边界就越弯,包住复杂的模式。
每加一层,边界就更自由了。
从笔直的线开始,
到折弯的线,再到弯曲的曲线。
简单的神经元组成层,
中间又夹进弯曲步骤,
一个谁单干都做不到梦的模式,
大家一起就学了下来。
这正是神经网络的本事。
现在来把整件事理一理。
来理一理
归成一句话,是这样。
把简单的神经元层层叠起、连起来。
信号从输入层流向输出层。
每一层接收上一层的输出,
抓住更大的特征。
层与层之间必须有个弯曲步骤。
不然全都会并成一条直线。
这样叠起层、中间弯一下,
网络就能学复杂的模式,这就是神经网络。
依次点要点回顾一下。(把神经元层层叠起 -> 信号往前流 -> 中间需要弯曲步骤 -> 层越多模式越复杂)
现在你知道了简单的神经元怎么聚起来,
学到复杂的模式。
一个单干只能画一条线的神经元,
一旦组成层、中间弯一下,
连曲线那样难的边界都学会了。
叠起来、弯一下这个简单的点子,
就是今天那些聪明机器的根基。
下回咱们接着看,这张网
怎么自己变得更好。