大江东去,浪淘尽,千古风流人物……
我不知道未来的黑洞会将我拽入何方,但是滚滚长江却毕竟向东流去,尽可能的去挖掘不同的东西,看看到底自己适合什么。2018年已经接近尾声了,有了清晰的目标就放手去干吧,别留遗憾。
今天记录一下构造神经网络的过程。
1.模拟一个神经元
首先我们所谓的神经网络全称是人工神经网络(ANN),区别于生物神经网络。
我们将输入当做树突,权重当做兴奋程度,将输入和权重做內积,即得到一个信号。
s=p1w1+p2w2+p3w3+......+pnwn
光有信号还不行,我们需要得到一个结果,神经网络往往用于处理分类问题,故需要一个激励函数来讲信号作为输入,输出我们想看到的分类,如0or1.
常见的激励函数有:
这里我们模拟了一个神经元的功能,但是神经元本身的特性也需要考虑,故此时我们将内部强度加一个basis,即偏置,
s=p1w1+p2w2+p3w3+......+pnwn+b
这便是一个神经元功能的完整描述。
2.感知机
有句话广为流传:深度学习源于神经网络,神经网络源于感知机。感知机就是我们上面模拟的神经元,一回事。
网络接收若干个输入,并通过输入函数、传递函数给出网络的一个输出。在监督学习中,我们可以通过期望值不断修正权重,最终得到一个可用的权重并用训练好的感知机去预测。
3.一个小例子
光说不练假把式,通过一个特别简单的例子来说明道理。
我个人特别喜欢音乐,那么就来一个乐器分类的例子。现在有吉他和钢琴两种乐器,我们通过声音的两个特性音高和音调来区分乐器,通过表格设置特征值。
种类 | 音调 | 音高 |
---|---|---|
钢琴 | 1(柔和) | 1(高) |
吉他 | -1(清脆) | -1(低) |
这里列举的几个特性可能不恰当,仅仅抛砖引玉,则
p1(音调)=−1或1
p2(音高)=−1或1
假设: w1=w2=1,b=0,将特征值与权重做內积,
钢琴:11+11+0=2
吉他:-1-1+(-1)*1+0=-2
我们定义1是钢琴,0是吉他,借用step函数作为激励函数,则
step(2)=1,step(−2)=0,正是我们想要的结果。
这里我们预先设定好的权重和偏置,而感知机的训练过程正是学习合适的权重和偏置来得到合理的预测模型满足我们的要求。训练过程如下:
- w(new)=w(old)+ep
- b(new)=b(old)+e
e表示误差, e=t(期望输出)−a(实际输出)
(1)
利用这个学习方法,我们先假设 w1=1,w2=−1,b=0
钢琴: s=p1w1+p2w2+b=0, f=0,利用step公式
我们期望1结果却得到0显然不符,此时误差为: e=t−a=1−0=1
(2)
带入学习模型,有:
w1new=w1old+ep=1+1∗1=2
w2new=w2old+ep=−1+1∗1=0
bnew=bold+e=1
(3)
使用新权值带入感知机模型,有:
net=p1w1+p2w2+b=1∗2+1∗0+1=3, f=1,达到要求
(4)
现在用新权值计算吉他:
net=p1w1+p2w2+b=−1∗2+(−1)∗0+1=−1, f=0,达到要求
两者都判断正确,训练结束,得到理想模型。