第一篇 神经网络的工作原理

1.1 灵感来源

一方面,有些任务,对传统的计算机而言很简单,对人类却很难。例如对数百万个数字进行运算。另一方面,有些任务对传统的计算机而言很难,对人类却很容易,比如从人群中识别认识的面孔

对于执行与计算器相匹配的任务来说,计算销售额,绘制图表,计算税收等都是很不错的,计算机可以以相当快的速度,在1秒内做4位数甚至10位数运算,这也许给你留下深刻印象,但这不是智能

因此研究人工智能的任务可以归结为,找到新方法或者新算法,使用新的工作方式,尝试求解这类相对困难的问题。

1.2 预测机

所有有用的计算机系统都有一个输入和一个输出,并在输入和输出之间进行某种类型的计算。神经网络亦是如此

当我们无法精确知道一些事情如何运作时,我们可以尝试使用模型估计运作方式,在模型中,包括了我们可以调整的参数。如果我们不知道如何将千米转换为其他单位,那么我们可以用线性函数作为模型,并使用可调节的梯度值作为参数

改进这些模型的一种方法是,基于模型和已知真实示例之间的比较,得到模型偏移的误差值,调整参数

1.3 分类器

在训练一个简单的线性分类器的时候,使其能够正确分类两个物种,其中误差值E为

$$ 误差值 = (期望目标值 - 实际输出值) $$

先从分类器的线性函数开始:

$$ y = Ax$$

参数A的初始猜测导致错误的y值,y值应该低于训练数据给定的值,

$$ t =(A + \Delta A) (其中,t是目标值,\Delta A 是微小的变化量)$$

所以有:

$$ E = t - y $$

$$ E = t - y = (A + \Delta A)x - Ax $$

$$ E = \Delta Ax $$

这样子我们就找到了基于当前的误差值来调整参数的方法,一般的我们会加一个学习率L(learning rate),可以得到下面式子:

$$ \Delta A = L{E \over x}$$

利用这个式子,我们可以不断更新A的值,最终实现自动化学习

我们使用简单的数学, 理解了线性分类器输出误差值和可调节斜率参数之间的关系。也就是说,在某种程度上,我们调整斜率可以消除误差值

当然很容易我们可以看到缺点,每一次调整都只能与最后一次训练样本最匹配,忽略了以前的训练样本,因此为了改进效率,我们加上了学习率,让训练样本不能主导整个学习过程

1.4 神经元——大自然的计算机

1.41 神经元

倘若数据不是由单一的线性过程支配,那么一个简单的线性分类器不能对数据进行划分。例如,由逻辑XOR运算符支配的数据无法由一个线性分类器划分

根据中学所学的生物知识,我们可以知道,神经元的工作原理,将电信号从一端传输到另一端,沿着轴突,将电信号从树突传到树突,然后这些信号从一个神经元传递到另一个神经元。

果蝇有10万个神经元,这个数字恰好落在现代计算机的复制范围。一只线虫只有302个神经元,但一只线虫却能做一些相当有用的任务,而相比之下当今的数字计算机却无法完成

1.42 模仿

生物的神经元和简单的线性函数不一样,不能简单地对输入做出响应,生成输出。因此无法使用这种形式:

输出 = (常数 * 输入) + C

观察表明,神经元不会立即反应,而是抑制输入,直到输入增强,超过阈值(threshold)才可以触发输出,这里可以使用signmoid function,有学习过机器学习的应该不陌生,逻辑回归就是用到这个函数


 上一篇
第二篇 三层神经网络的实例和数学原理 第二篇 三层神经网络的实例和数学原理
预先知识 理解线性映射 矩阵运算(会计算当然好,也不难,但重要性不大) 由于markdown或mathjax很难制作流程图,插入图片的话,我的博客嵌入图片比较麻烦,就先不画三层的神经网络,不过也不难,可以自行在草稿纸上画神经网络 实例
2019-07-21
下一篇 
第一章 贝叶斯推断的哲学 第一章 贝叶斯推断的哲学
引言从这章开始进入学习贝叶斯,我会通过相关书籍,文章,论文等等,不引入太多数学原理来描述贝叶斯(其实也是我本人的数学功底不太行(;-_-)。。。),鉴于我本人水平有限,有错误的地方可以在下面留言指正,不胜感激 尽管你是个编程高手,bug仍
  目录