神经网络

一旦多个神经元首尾形成一个类似网络的结构来协同工作的时候,那就可以被称为神经网络了.一般也没有人硬性规定网络必须有多少层,每层有多少个神经元节点,完全是在各个场景的case中根据经验和一些相关理论进行尝试,最后得到一个适应当前场景的网络设计.
大家请注意这一点,在学习神经网络(深度学习)的整个历程中你会不断发现这样或者那样的不同形式的网络,每种网络或出自某个具体的工程项目,根据需求,工程人员的经验,实验效果来选定的,或者出自某些尖端实验室,并辅以相关的论文对网络在实验中的效果与同期其他网络的解决方案做对比.但是你极少能发现这些网络的诞生过程中有完整的,严谨的,普适的推导过程–也难怪有不少从事深度学习多年的资深老兵说深度学习越学越像老中医.年轻大夫没经验不敢开方子,老中医发现里面的门道太深了,深到研究了一辈子也没办法总结出完整的,可以精确推导的公式或定理,大部分情况只能靠自己的经验和实验结果调整药方.听起来好像挺无奈的是吧?其实你学过之后就知道了,用好了是真能解决问题,因为还是哟一些沉淀下来相对比较固定的设计思路,设计技巧和体系.
我们来看看神经网络的结构吧,这就是一个比较简单的神经网络结构了,在一个神经网络中通常会分这样几层:输入层,隐藏层,输出层.
输入层在整个网络的最前端部分,直接接受输入的向量,他是不对数据做任何处理的,所以通常这一层是不计入层数的.
隐藏层可以用一层或多层,现在比较深的网络据我所知有超过50层的,甚至在一些”特殊”的网络–例如深度残差网络中有超过150层的,这已经非常多了,在本书所涉及的实验中是没有这么多层的神经网络出现的.
输出层是最后一层,用来输出整个网络处理的值,这个值可能是一份分类像两只,也可能是一个类似线性回归那样产生的连续的值,也可能是别的古扎类型的值或者向量,根据不同的需求输出成的构造也不尽相同,后面我们会逐步接触到.
神经元就是像图上所画的这种首尾相接的方式进行数据传递的,前一个神经元接收数据,数据经过处理会输出非后面一层的相应的一个或多个神经元.对于 一个x向量中的任何一个纬度分量,你都可以在这种拓扑描述中看到他在通过一层一层处理时通过了哪些神经元的处理,并且在输出后又输入了哪些神经元.形式上就是这样样子,所以叫法很形象,神经网络–由神经元所组织的网络.