Alphgo在围棋上战胜李世石属于里程碑的时间,因此,深度学习也被炒得很热,但什么叫深度学习,为什么是深度,其实大多不知道,如果解释成多层神经网络估计也没多少人明白。
即使你是搞建模的,假如没搞过神经网络,可能也不清楚,甚至你做过神经网络工程,但如果仅仅是调用一下算法库,也可能是一知半解。
当然,大数据时代,我们也许会用就可以了,特别是对于企业来讲,不用知道其原理。但深度学习作为一个方向性的东西,笔者总是想探究一些其本质的东西,特别是希望能理解深度学习理解世界的方式,也许其对于成长有所帮助。
虽然以前网上找过一些深度学习的资料,但一直启发有限,直到最近读到台湾大学李宏毅教授的一个深度学习的课件,还有很多知乎大神的解释,才有更多的领悟,今天,就顺着大师的脉络,以浅显的方式去认知深度学习。
这是篇普及基本知识的文章,有很多的图片辅助理解,笔者也尽量简单的描述,没有晦涩的公式,权当作为自己的读书笔记吧。
认识机器学习。
机器学习=寻找一个合适函数f,就是这么简单,这就是席卷全球的人工智能做的事情,下面一张图已经道尽了一切。
但寻找f这个函数是如此困难,比如下面我要用图像识别一只猫或狗:
我要做什么呢?
首先,寻找一堆的函数,比如f1,f2……。
其次,找到一堆训练用的猫狗图片,将图片输入到f中,获得对应的结果,比如,输入一只猫,函数告诉我这是一只猫,输入一只狗,函数告诉我是一只狗,否则,就换。
最后,选择识别正确的函数f作为结果,也就是我们通常所说的算法,或称模型,或称Alphgo,或者,这个f,就是所谓的人工智能。
下图示例了该过程:
再次,要用前面正确的f,输入一些新的猫的图片,看看这个f(即模型)靠不靠谱,这个过程也叫测试过程,即下图所示的Testing,而上图的过程,叫训练过程Training,大家听到阿尔法狗每天都要自我对局几千万盘,这个过程就叫Training。
这个是机器学习的基础知识,理解深度学习,这个是出发点,我想大多人都懂了,不懂,肯定是没认真看图解字。
人的大脑。
人的大脑有几十亿个被称作neuron(神经细胞、神经元)的微小细胞,这些神经元相互之间通过无数连接线组成,如果一个神经细胞在一段时间内受到高频率的刺激,则它和输入信号的神经细胞之间的连接强度就会按某种过程改变,使得该神经细胞下一次受到激励时更容易兴奋。
这个就是神经网络,人的认知模型,那么如何模拟神经网路,也就是如何模拟人的认知过程,也叫人工神经网络。
那么一个神经元neuron如何模拟?
下图是一个人工neuron的示意:
a指各种输入信息,比如图像信息的输入,w指权重,就是神经连接线被刺激后的大小,b指偏移量,最后,这些信息通过加权形成输入的z,z作为外部刺激的一种表达形式,统一通过一个激活函数σ的转换,给定最终的输出结果a。
这就是一个人工模拟的神经元过程,读懂它,再给你一个案例。
神经网络有太多的neuron,因此,人工神经是有很多人工neuron相互连接构成的,每一个neuron有不同的权重,偏移或者激活函数,如下图: