量化百科

【深度学习之美16】神经网络的拓扑结构是如何设计的?

由ypyu创建,最终由ypyu 被浏览 5 用户

“我思故我”的神经元

针对前馈神经网络,输入层和输出层设计比较直观。针对神经网络,我们拆开想想What和How的问题:


1)神经:即神经元,什么是神经元(What)?2)网络:即连接权重和偏置,它们是怎么连接的(How)?

对于计算机而言,它能计算的就是一些数值。而数值的意义是人赋予的。法国著名数学家、哲学家笛卡尔曾在它的著作《谈谈方法》提到:“我想,所以我是”。文雅一点的翻译就是“我思故我在”。套用在神经元的认知上,也是恰当的。这世上本没有什么人工神经元,你(人)认为它是,它就是了。也就是说,数值的逻辑意义,是人给的。

比如说,假如我们尝试判断一张手写数字图片上面是否写着数字“2”。很自然地,我们可以把图片的每一个像素的灰度值,作为网络的输入。从笛卡尔“我思故我在”角度来看,在输入层,每个像素都是一个数值(如果是彩色图,则是3通道的数组),而把包容这个数值的容器视作一个神经元。

输入层神经元个数的设计

如果图片的维度是16×16,那么我们输入层神经元就可以设计为256个(也就是说,输入层是一个包括256个灰度值的向量),每个神经元接受的输入值,就是归一化处理之后的灰度值。0代表白色像素,黑色像素像素代表1,灰度像素的值介于0到1之间。也就是说,输入向量的维度(像素个数)要和输入层神经元个数相同。

图9-1 前馈神经网络的输出

输入层神经元个数的设计

而对输出层而言,它的神经元个数和输入神经元的个数,是没有对应关系的,而是和待分事物类别有一定的相关性。

比如说,对于图9-1所示的案例,我们的任务是识别手写数字,而数字有0~9共10类。所以,如果在输出层采用Softmax回归函数,它的输出神经元数量仅为10个,分别对应是数字“0~9”的分类概率。

最终的分类结果,择其大者而判之。比如说,如果判定为“2”的概率(比如说80%),远远大于其他数字,那么整个神经网络的最终判定,就是手写图片中的数字是“2”,而非其它数字。

隐含层神经元个数的设计

相比于神经网络输入与输出层设计的明了直观,前馈神经网络的隐含层设计,可就没有那么简单了。说好听点,它是一门艺术,依赖于“工匠”的打磨。说不好听点,它就是一个体力活,需要不断地折腾“试错”。

我们可以把隐含层暂定为一个黑箱,它负责输入和输出之间的非线性映射变化,具体功能有点“说不清、道不明”(这是神经网络的理论短板所在)。隐含层的层数不固定,每层的神经元个数也不固定,它们都属于“超参数”,是人们根据实际情况不断调整选取的。

前面我们讨论了什么是神经元。下面我们再讨论一下神经元之间是如何连接的。事实上,它同样是人赋予意义的数值参数。我们把神经元与神经元之间的影响程度叫作为权值(weight)。权重的大小就是连接的强弱。它“告诉”下一层相邻神经元更应该关注那些像素图案。

除了连接权值,神经元内部还有一个施加于自身的特殊权值,叫偏置(bias)。有了偏置,它能辅助神经元是否更容易被激活。也就是说,它决定神经元的连接加权和得有多大,才能让激发变得有意义。

神经网络结构的设计目的在于,让神经网络以“更佳”的性能来学习。而这里的所谓“学习”,就是找到合适的权重和偏置,让损失函数的值达到最小。

标签

神经网络深度学习深度学习算法