机器学习之神经网络基础
一、神经元模型 在研究人工智能的过程中,模拟生物的神经是一条很显然的道路。神经网络模型最初便是以模拟生物的神经网络为目的的。但是在早期算力不足的情况下,神经网络的效果并不怎么好。直到硬件基础成熟的最近一段时间,神经网络才发挥出超常的能力。 当然,此时经过改进、优化后的神经网络也在一定程度上偏离了最初模拟生物神经系统的初衷。当前的,以统计为基础的神经网络模型是否是实现强人工智能的有效方法也不得而知。但是我们还是有必要对神经网络模型,特别是作为神经网络的最小单元——神经元模型,做充分的介绍。因为事实证明了,这是一条有效的创造 AI 工具的途径。 单个神经元可以看做有多个输入 $x_j$,单个输出 $a$ 的函数。神经元模型具有如下属性: 权重 $\vec{w}, b$ 激发函数 $g(z)$ 所对应的函数为 $$ f_{\vec{w}, b, g(z)}(\vec{x}) = g(\vec{w} \cdot \vec{x} + b) $$ 取 $g(z) = \frac{1}{1 + e^{-z}}$, 与我们之前学习过的逻辑回归没有差别。 通过对这样的神经元按一定规则进行组合,便可以构造用于完成某种功能的神经网络。 二、神经网络层 对于一组输入,我们可以将其依次通过不同的神经元进行计算,计算的结果可以按顺序组成向量,作为一组新的输入。这种不断迭代的能力是神经网络的基础。我们称同一次计算使用的所有神经元为同一层的神经元。这些神经元组成了神经网络上的一层。不同层的组合构成了整个神经网络。 注意,同一层的神经元需要满足输入个数相同、激发函数相同。 从数学上讲,设输入为 $\vec{x} = (x_1, x_2, ..., x_n)$,输出为 $\vec{a} = (a_1, a_2, ..., a_m)$,神经元函数为 $f_1(\vec{x}), f_2(\vec{x}), ... f_m(\vec{x})$ 则 $$ \vec{a} = (f_1(\vec{x}), f_2(\vec{x}), ... f_m(\vec{x})) $$ 对于不同层上的属性或参数 x,我们加上上标 $x^{[i]}$ 表示该属性或参数属于第 i 层(第几层指示神经元计算的顺序);对于同一层的不同神经元,加上下标 $x^{[i]}_j$ 表示第 i 层的第 j 个神经元的属性或参数。...