神经网络(入门)
neural network
《神经网络与深度学习》---Michael Nielsen (Neural Networks and Deep Learning)
人工智能、模式识别、深度学习
生物学的神经网络-大脑A Biological Neural Network–The Brain
皮层(Cortex)
灰色层只有几毫米厚,其中紧密地压缩着几十亿个被称作neuron(神经细胞、神经元)的微小细胞。白色层在皮层灰质的下面,占据了皮层的大部分空间,是由神经细胞相互之间的无数连接线组成。
神经细胞的结构
轴突(axon):用来将信号传递给其他的神经细胞
神经细胞 : 由一个细胞体(soma)、一些树突(dendrite) 、和一根可以很长的轴突组成
突触(Synapse) : 轴突通过分支的末梢(terminal)和其他神经细胞的树突相接触,形成所谓的突触(Synapse)
每个神经细胞通过它的树突和大约10,000个其他的神经细胞相连。
大脑中所有神经细胞之间连接总计可能有l00,000,000,000,000个
简单描述
- 神经细胞利用电-化学过程交换信号,信号从树突上的突触进入本细胞。
- 简化一下:只有0和1两种状态,即大脑的神经细胞也只有两种状态:兴奋(fire)和不兴奋(即抑制)。
- 发射信号的强度不变,变化的仅仅是频率。
- 神经细胞利用一种我们还不知道的方法,把所有从树突突触上进来的信号进行相加,如果全部信号的总和超过某个阀值,就会激发神经细胞进入兴奋(fire)状态,这时就会有一个电信号通过轴突发送出去给其他神经细胞。如果信号总和没有达到阀值,神经细胞就不会兴奋起来。
人类大脑的明显特征
能实现无监督的学习
(“当神经细胞A的一个轴突重复地或持久地激励另一个神经细胞B后,则其中的一个或同时两个神经细胞就会发生一种生长过程或新陈代谢式的变化,使得激励B细胞之一的A细胞的效能会增加”)
对损伤有冗余性(tolerance)
(大脑即使有很大一部分受到了损伤,它仍然能够执行复杂的工作,例如老鼠实验。在大脑中,知识并不是保存在一个局部地方)
处理信息的效率极高
(因神经细胞采用了并行的工作方式,使得大脑能够同时处理大量的数据。)
善于归纳推广
(大脑和数字计算机不同,它极擅长的事情之一就是模式识别,并能根据已熟悉信息进行归纳推广(generlize)。例如,我们能够阅读他人所写的手稿上的文字,即使我们以前从来没见过他所写的东西。)
它是有意识的
(至今尚未取得实质性的统一看法)
感知器
模拟人的大脑,造出可以思考的机器
思考的基础是神经元,"人造神经元"(artificial neuron),组成人工神经网络,模拟思考。"人造神经元"模型,叫做"感知器"(perceptron)
上图的圆圈就代表一个感知器。它接受多个输入(x1,x2,x3...),产生一个输出(output),好比神经末梢感受各种外部环境的变化,最后产生电信号。
为了简化模型,我们约定每种输入只有两种可能:1 或 0。如果所有输入都是1,表示各种条件都成立,输出就是1;如果所有输入都是0,表示条件都不成立,输出就是0。
感知器的栗子
正在举办一年一度的游戏动漫展览,小明拿不定主意,周末要不要去参观。
这就构成一个感知器。
上面三个因素就是外部输入,最后的决定就是感知器的输出。如果三个因素都是 Yes(使用1表示),输出就是1(去参观);如果都是 No(使用0表示),输出就是0(不去参观)。
权重和阈值
某些因素是决定性因素,另一些因素是次要因素。因此,可以给这些因素指定权重(weight),代表它们不同的重要性。
指定一个阈值(threshold)。如果总和大于阈值,感知器输出1,否则输出0
感知器的激励函数
n个输入:x1, x2, x3, x4, x5, ..., xn
对应的n个权重: w1, w2, w3, w4, w5 ..., wn
激励值:a = w1x1 + w2x2 + w3x3 + w4x4 + w5x5 +...+ wnxn
单一感知器的决策过程
复杂的决策模型
多个感知器构成的多层网络
底层感知器接收外部输入,做出判断以后,再发出信号,作为上层感知器的输入,直至得到最后的结果。(可能发生循环传递,感知器的输出依然只有一个,但是可以发送给多个目标。)
矢量化
- 外部因素 x1、x2、x3 写成矢量 <x1, x2, x3>,简写为 x
- 权重 w1、w2、w3 也写成矢量 <w1, w2, w3>,简写为 w
- 定义运算 w⋅x = ∑ wx,即 w 和 x 的点运算,等于因素与权重的乘积之和
- 定义 b 等于负的阈值 b = -threshold
神经网络的运作过程
搭建
- 输入和输出
- 权重(w)和阈值(b)
- 多层感知器的结构
需要事先画出这张图:
试错法
最困难的部分就是确定权重(w)和阈值(b)。目前为止,这两个值都是主观给出的,但现实中很难估计它们的值
其他参数都不变,w(或b)的微小变动,记作Δw(或Δb),然后观察输出有什么变化。不断重复这个过程,直至得到对应最精确输出的那组w和b,就是我们要的值。这个过程称为模型的训练。
神经网络的运作过程
- 确定输入和输出
- 找到一种或多种算法,可以从输入得到输出
- 找到一组已知答案的数据集,用来训练模型,估算w和b
- 一旦新的数据产生,输入模型,就可以得到结果,同时对w和b进行校正
神经网络的栗子
字符识别
由8x8个格子组成的一块面板。每一个格子里放了一个小灯,每个小灯都可独立地被打开(格子变亮)或关闭(格子变黑),这样面板就可以用来显示0-9数字符号。
输出1代表确认已显示了数字“4”,而输出0表示没有显示“4”
先把神经网的所有权重初始化为任意值。然后给它一系列的输入,对每一种输入配置,检查它的输出是什么,并调整相应的权重。如果送给网络的输入模式不是“4”, 则网络应该输出0。因此每个非“4”字符时的网络权重应进行调节,使得它的输出趋向于0。当代表“4”的模式输送给网络时,则应把权重调整到使输出趋向于1。
车牌自动识别
车牌照片就是输入,车牌号码就是输出,照片的清晰度可以设置权重(w)。然后,找到一种或多种图像比对算法,作为感知器。算法的得到结果是一个概率,比如75%的概率可以确定是数字1。这就需要设置一个阈值(b)(比如85%的可信度),低于这个门槛结果就无效。
一组已经识别好的车牌照片,作为训练集数据,输入模型。不断调整各种参数,直至找到正确率最高的参数组合。以后拿到新照片,就可以直接给出结果了。
还需要考虑很多复杂的问题
输出的连续性
按照假设,输出只有两种结果:0和1。
但是,模型要求w或b的微小变化,会引发输出的变化。只有0和1,太不敏感了,无法保证正确性。
通过一系列的数学公式构造,将"输出"改造成一个连续性函数
参考
神经网络
By christyma
神经网络
- 807