人工神经网络,简称神经网络,是一种仿照生物神经网络的结构和功用的数学模型或许核算模型。其实是一种与贝叶斯网络很像的一种算法。之前看过一些内容一直云里雾里,这次决议写一篇博客。弄懂这个基本原理,究竟现在深度学习太火了。
神经网络是一种办法,既能够用来做有监督的使命,如分类、视觉辨认等,也能够用作无监督的使命。首要,咱们看一个简略的比如。如下图所示(这个图网上有许多人引用了,但我找不到出处,欢迎纠正),假设咱们想练习一个算法能够使其辨认出是猫仍是狗,这是很简略的一个分类使命,咱们能够找一条线(模型),在这个二元坐标中进行“一刀切”,把这两组数据分隔。咱们知道,在解析几何中,这条直线能够用如下的公式表达:


图1 猫狗数据

图2 一个简略的神经网络
这儿的W1和W2便是两个坐标轴上的系数,能够称为权重。W0能够称作截距,也叫做偏移。新来一个数据点,也便是一组输入值(X1,X2),假设在这条线的左面,那么它便是一只狗,假设在右边便是一只猫了。这就能够用一个简略的神经网络来表明。如图2所示,X1和X2别离是输入值,Y是输出值,两条边的权重别离是W1和W2。这是一个最简略的神经网络了。这便是运用神经网络界说了一个线性分类器了。这儿的一个圆形的节点便是一个神经元。咱们也能够选用另一种方法,即在输入输出之间加一个中心节点S,然后添加一个输出层,包含两个节点Y1和Y2,别离对应猫和狗,最终哪个输出节点的值大,那么这个数据就归于哪个类别(猫或许狗)。


关于简略的二分类问题这就能够处理了。但在实践情况中,有许多问题无法简略的运用“一刀切”的方法处理,如图3所示,假定猫和狗的数据散布如下图,那么这就无法用“一刀切”的方法来处理了,可是咱们能够切两刀,反正各一刀,然后把相同的“块”联合起来,这样就处理了比较杂乱的分类问题了。也有些问题,需要用曲线来切割。在这种情况下,咱们就需要比较杂乱一点的神经网络了。以曲线为例,咱们能够规划出一个三层的神经网络。这便是用神经网络规划的一个非线性分类器。理论上讲,怎么一个分类器都能够规划一个神经网络来表征,也便是说,不论实践图形怎么,咱们都能够规划一个神经网络来拟合。到这儿,或许有人问,每个节点的这个函数要怎么挑选?依据吴军教师《数学之美》第二版中的说法,为了供给人工神经网络的通用性,咱们一般规则每个神经元的函数只能针对其输入的变量做一次非线性的改换。举个比如说便是假设某个神经元Y 的输入值是X1,X2,…Xn,它们的边的权重别离为W1,W2,…Wn,那么核算Y节点的值分两步进行,第一步是核算来自输入值的线性组合:

第二步是核算y=f(G),这儿的f(⋅)能够使非线性的,,但由于里边的参数是一个详细的值,所以不会很杂乱。这两个过程的结合使得人工神经网络既灵敏又不至于太杂乱。这儿的f(⋅)便是激活函数。线性模型的表达才能不行,它的效果便是来增强模型的表明才能。人工神经网络能够许多层衔接在一起,因此在人工神经网络中,首要的作业便是规划结构(底层网络,每层几个节点等)和激活函数。咱们常用的激活函数包含Sigmoid函数、ReLU函数、Tanh函数等等。如下图所示,这是几种简略的激活函数的示意图( https://ypwhs.gitbooks.io/nnplayground/content/Activation.html )
