一句话,神经网络就是一个巨大巨复杂的公式:
y=f(x)
真的真的就这么简单。 那为什么神经网络听起来这么牛呢? 其实只要解释三个问题: 1. 神经网络的特征及解决什么问题 2. 神经网络结构
Q1. 神经网络特征及其解决什么问题。
我在自学神经网络之前,有一个印象,神经网络很牛逼,围棋都能下。在这之前,大家觉得计算机很快,计算能力很强。但是,所有的软件,后面的逻辑都是技术大神们赋予的。
举个栗子,什么是猫。这个问题看起来特别简单,喵不喵一眼就看得出来。
但是再深入一想,躺着喵是喵,坐着的也是;露个头是喵,全身也是喵;不同的背景也是喵;不同的表情也是喵。 简直细思恐极,就是一个凭感觉的问题。
这类问题,为什么传统计算机解决不了呢? 因为人类也无法给出准确的定义(数字化的)。
大家站在计算机的角度想想,假设一个图是28*28像素,他们收到的是28*28个数字。也就是计算机收到784个数字,然后得告诉你,这个是猫咪?这TM太难了。但是很无奈,计算机面对的就是这么个问题。
再回到这个问题,它难在哪里呢? 难在人类无法按照以前一样,每步给出明确的指示,他必须 自己学习。
那么人类是怎么认识猫咪的呢? 小朋友 看很多喵,看着看着就知道这是喵咪了。虽然,搞不清楚过程如何,但是这也是训练的过程。
科学家仿照人类神经学,设计了电脑神经网络。
Q2. 基础神经网络结构
关注过神经网络知识的同学,肯定看过类似下面的图。一个神经网络包含几个部分: 1. 神经元 2. 激励函数 3. 神经层
什么是计算机里面的神经元呢?
简单来说就是一个计算节点。 再通俗点就是一个公式:
y= w * X + b
X 就是输入值, y 是输出值。w和b 是每个神经元的参数。
再直接点,我们假设有一个超超超级简单的神经网络,TM就一个神经元。那么当我们输入值X 是1, 也假设W和b 都是1, 那么输出值y就是2.
这么看起来神经元好像没啥用。但是这就是一个简单神经元的作用,做一点点改变。
并且每个神经元的特征就是,此神经元的参数w和b。参数决定了每个神经元所输出的值。 比如同样输入1, 不同的神经元可能输出 2 或者3
2. 神经层
假设每个神经元都是一个简单的公式。 但是如下图,当很多神经元结合起来时,那么就会形成一个超级超级复杂的公式。
OK. 第一个结论----->首先一个超级超级复杂的公式,那么就能够储存非常复杂的信息。 这是神经网络的一个强项。
一个神经网络分为:输入层,隐藏层,输出层。
假设计算机看到的是一个图片(28*28),我们需要判断是猫还是不是猫?
那么:
输入层就是 784 个像素
输出层就是一个数字(0或者1)
中间隐藏层是根据设计而来,假设就有两层,每层100个神经元
这就是整体的神经网络结构。 大家可以脑补下这个公式的复杂成都。 784的第一个像素,需要经历下一层神经网络的每个神经元(wx+b)。然后第一层100个神经元的每个计算结果都要进入下一个神经层的每个单元。 反正很复杂就是了。
3. 激励函数
激励函数有很多种,比如Relu,sigmoid。 这些名字不需要记住,他只是将每个神经元的计算结果进行一个处理。
大结论,神经网络构建的是一个非常巨大和复杂的公式。 这个巨大的公式就是模拟人类的神经网络,一个巨大复杂的网络。
Q3. 神经网络的训练
前面结论神经网络是一个很复杂的公式,类似人类的神经。 那么如果这个公式很牛逼 ,我们输入这张照片(28*28) 784个像素时,它能够输出Yes or No 就好了。
那么剩下的就是训练了嘛? 那么训练到底是训练什么呢?
再比如,我们整个神经网络就一个神经元(单细胞哈哈哈哈),我们输入值是1,他最初是的参数(w=1,b=1)算出来就是y=2. 因为初始参数是随机的,我们希望输出是1,那么可能最终参数要变成(w=1,b=0)。
所以结论是,神经网络的训练就是神经元的训练。
OK,那么具体是怎么训练的呢?
首先回到那个一个神经元的例子:
输入值X=1 , 我们希望的输出值是 1
但是初始状态下,y=1*1+1 =2 ,输出值为2.
简单来说,差距= 2-1=1 意味着我们希望的输出值,和实际输出值的差距
如下图,就是差距是由各个参数决定的,
我们知道了差距,就是由参数决定的,那么训练参数的目标就是缩小差异。
下面部分可能有点绕,如下图,假设 ,差距和 参数可以画出一张图如下。
假设我们可以每次都取一个切线,在切线下移动一小步。那么就一定意味的差距的缩小。当下降到底部时,切线等于0,已经无法再下降。
当然大家YY下也可以知道,实际情况比这复杂。因为实际上不可能只有一个参数影响Y,可能是784百个参数影响Y, 那么就是在784维空间找最低点。
那么再回到命题,我们怎么训练神经网络认识喵呢?
首先,构建一个神经网络;
然后,输入很多个样本(喵咪的图片和非喵咪的图片)和每个样本的标签
最后,训练及测试
MD,说是一句话,又讲了这么长,大家只要明白, 神经网络是一个很复杂的公式,能处理一些“凭感觉的”问题。
如果有问题可以直接问我哦,下一期会制作一个最基础的神经网络。
领取专属 10元无门槛券
私享最新 技术干货