作者:唐宇迪
今天我们来讨论当下最热门的神经网络,现在深度学习炒的非常火,其实本质还是把神经网络算法进行了延伸和优化!咱们这回的目标就直入主题用最简单的语言让大家清楚神经网络究竟是个什么东西。关于神经网络与人工智能的发展,以及神经网络各种生物学模型咱们就不唠了,我是觉得把神经网络比作各种类人脑模型和生物学模型没有半点助于咱们理解,反而把简单的问题复杂了,这些恩怨情仇咱们就不过多介绍了!
这张图就是我们的核心了,也是整个神经网络的架构,只要能理解这个,那就OK了!首先我们来观察整个结构,发现在神经网络中是存在多个层的,有输入层,隐层1,隐层2,输出层。那么我们想要得到一个合适的结果,就必须通过这么多层得到最终的结果,在这里咱们先来考虑一个问题,神经网络究竟做了一件什么事?
如果你想做一个猫狗识别,大家首先想到了神经网络,那它是怎么做的呢?先来想想咱们人类是怎么分辨的,是不是根据猫和狗的特征是不一样的,所以我们可以很轻松就知道什么事猫什么是狗。既然这样,神经网络要做的事跟咱们一样,它也需要知道猫的特征是什么,狗的特征是什么,这么多的层次结构其实就做了一件事,进行特征提取,我们希望网络结构能更好的识别出来我们想要的结果,那势必需要它们能提取处最合适的特征,所以神经网络的强大之处就在于它可以帮助我们更好的选择出最恰当的特征。
在第一张图中我们定义了多层的结构,在这里有一个概念叫做神经元,那么神经元真的存在吗?像大脑一样?其实就是一个权重参数矩阵,比如你有一个输入数据。它是由3个特征组成的,我们就说输入是一个batchsize*3的矩阵,(batchsieze是一次输入的数据量大小),那既然要对输入提取特征,我们就需要权重参数矩阵W了,在图中神经元的意思就是我们要把这个3个特征如何变幻才能得到更好的信息表达,比如中间的第一个隐层有4个神经元,那么我们需要的第一个权重参数矩阵W1就是3 * 4,表示通过矩阵链接后得到的是batchsize * 4的特征,也就是说我们将特征进行的变换,看起来好像是从3变到了4只增加了一个,但是我们的核心一方面是特征的个数,这个我们可以自己定义神经元的个数。另一方面我们关注的点在于,什么样的权重参数矩阵W1才能给我得到更好的特征,那么神经网络大家都说它是一个黑盒子,原因就在于权重参数矩阵W1内部是很难解释的,其实我们也不需要认识它,只要计算机能懂就OK了。那么这一步是怎么做的呢?计算机怎么得到最好的权重参数W1帮我们完成了特征的提取呢?这一点就要靠反向传播与梯度下降了,简单来说就是我们告诉神经网络我的目标就是分辨出什么是猫什么是狗,然后神经网络就会通过大量的迭代去寻找最合适的一组权重参数矩阵。(如果不清楚什么事梯度下降,先来看看我之前的文章吧!)
干货分享
斯坦福课程 :http://vision.stanford.edu/teaching/cs231n/
这个只推荐咱们英文听力,以及基础很好的同学
深度学习入门视频:https://edu.csdn.net/course/detail/3921
这个适合有一定Python语言基础的同学。
CAFFE框架 :http://caffe.berkeleyvision.org/
经典深度学习框架,有很多python例子,跟着做一遍收获很大。