如下有部分公式,若是没法显示,请访问原文连接算法
过年期间,我抽时间把深度学习的神经网络的数学基础学习了一下,简单的看了看神经网络的基础,在这里我经过写这个系列的博文来沉淀我所学到的知识。网络
神经网络的这个想法,是受到生物学上的神经元的启发所建立出来的。在生物学上,神经元是如下方的流程来做出反应的。app
点火
),向另外的神经元传递固定强度的信号 权重
是不一样的。 阈值:神经元固有的边界敏感值值函数
点火:神经元参数的和超过阈值,神经元对此做出反应post
对于生命来讲,神经元会忽略微笑的输入信号,这是十分重要的。学习
反之,若是神经元对于任何微小的信号都变得兴奋,那么这个神经系统将“情绪不稳定”3d
(想一想网络上说的玻璃心是否是就是这个意思呢)code
上面咱们说到神经元是经过将输入的信号的和是否超过阈值来判断是否点火,那么若是点火以后呢,点火的输出又是什么呢?cdn
其实,神经元的点火输出也是信号,有意思的是,不管神经元接受到多大的刺激或不少不少神经元传来的信号,这个神经元也只输出固定大小的信号,好比点火后的输出是0或1。简单整理以下:blog
下面让咱们用数学来简单的表示1-1
中的流程吧:
咱们这里将神经元的阈值设置为0,大于阈值则点火,输入则分为$le 0$和$>0$,也能够成为”有“、“无”两种输入信号。
咱们这里将神经元的点火设置为0
和1
两种信号。
则
从上面咱们知道。神经元点火与否是根据输入信号的和来判断的,可是这个求和的方式不是简单的求和,而是不一样的输入的重要性不一样,这个重要性系数就是咱们的权重
,好比打网球的时候,咱们的视觉神经信号的是比听觉神经信号更重要的,那么视觉神经元和听觉神经元的权重就不一样。
假设咱们有三个神经元${x}_{1}$、${x}_{2}$、${x}_{3}$,则神经元的输入信号的和为:$${w}_{1}{x}_{1}+{w}_{2}{x}_{2}+{w}_{3}{x}_{3}$$
其中${w}_{1}$、${w}_{2}$、${w}_{3}$分别是输入信号${x}_{1}$、${x}_{2}$、${x}_{3}$对应的权重。
根据上述,神经元在信号之和超过阈值时,点火,那么咱们根据${w}_{1}{x}_{1}+{w}_{2}{x}_{2}+{w}_{3}{x}_{3}$推出,点火条件以下:
这里的 $theta$ 表明
阈值
$$无输出信号(y=0):{w}_{1}{x}_{1}+{w}_{2}{x}_{2}+{w}_{3}{x}_{3}
例 1 来自两个神经元 一、2 的输入信号分别为变量$x_1$ 、$x_2$ ,权重为$w_1$ 、$w_2$,神经元的阈值为$theta$ 。当$w_1=5$ ,$w_2=3$ ,$theta=4$ 时,考察信号之和${w}_{1}{x}_{1}+{w}_{2}{x}_{2}$的值与表示点火与否的输出信号$y$的值。
下面咱们将上方的点火条件函数进行图形化,以神经元的输入信号的和为横轴,神经元的输出信号y为纵轴,以下图所示:当信号之和小于$theta$时,y取0,反之取1
若是用函数来表示这个图像,那么就须要用到下方的单位阶跃函数
$$u(z)=left\{ begin{matrix} 0quad (z<0) \\="" 1quad="" (zge="" 0)="" end{matrix}="" right\}="" $$<="" p="">
阶跃函数图形以下:
利用阶跃函数,咱们将咱们的神经元输入
和阈值
带入,能够推出咱们的点火函数
:$$y=u(w1x1+w2x2+w3x3-theta )$$
那么阶跃函数中的自变量z,咱们就能够求出来了。这个z,咱们又称做加权输入
$$z=w1x1+w2x2+w3x3-theta $$
下面的图是神经元的简化图
由于在上面说道在生物界,y的值为1或0,那么除去生物这个限制,咱们就须要对咱们的点火函数进行修改,这里咱们把u变成a,这里的a一般是建模者定义的函数,成为激活函数
。$$y=a(w1x1+w2x2+w3x3-theta )$$
在上面这个函数中,y能够取到任何值。若是通俗一点的话,能够理解为这个y值是神经元的兴奋度、反应度、活性度
下面对比下两种神经元的差别:
激活函数的表明性例子就是Sigmoid函数$sigma (z)$,下面是它的定义:
$$sigma (z)=frac { 1 }{ 1+{ e }^{ -z }} (zapprox2.718281... )$$
这个函数的做用是将输入值转换到(0,1)区间,也就是说sigmoid函数的输出值是大于0且小于1的任意值。该函数最重要的特性是连续
、光滑
,也就表明着可导
。有了这种性质就使得sigmoid函数会很容易处理
阶跃函数的输出值为0和1可表明点火与否,而sigmoid函数的输出值却在(0,1)区间,那么咱们就要换个思路了,不能用其输出值表明点火与否,可是可用它的输出值表明神经元的兴奋度,越接近1越兴奋。
咱们将主要使用sigmoid来做为标准的激活函数使用,若是使用数学上单调递增
的可导
函数来代替sigmoid做为激活函数,那么也是能够的.
咱们再来看下咱们的激活函数:$$y=a(w1x1+w2x2+w3x3-theta )$$
这里的$theta$咱们称为阈值,在生物学上是神经元特性的值,通俗的讲$theta$表示为神经元的感觉能力,若是$theta$较大,咱们的神经元会不容易兴奋(就是迟钝),若是$theta$较小,则神经元会很容易兴奋(特别敏感)
上面的式子中$theta$有负号,这帮搞数学的觉着负号很差看,认为减法容易算错,非要把负号干掉,因此就把$-theta$替换为了$b$,因而就有了下面这两个式子:
下面这两个式子是神经网络的出发点,很是重要
$$z=w1x1+w2x2+w3x3+b $$$$y=a(z)=a(w1x1+w2x2+w3x3+b )$$
变成了这个样子,式子好看了,也不容易错了,因而这个$b$就叫作偏置
生物学上的$w1$、$w2$、$w_3$和阈值$theta$($-b$)都不是负数,由于负数不会在天然现象中出现,可是咱们将神经元通常化后,是容许出现负数的。
上面咱们用一个例子来验证咱们所学到的知识。相信不少人的算法就像上方表格中的加权输入z同样,其实对于计算机来讲有一种更加容易的计算方式,那就是线性代数
中的内积
。
咱们将变量$x1$、$x2$、$x3$做为变量向量
,将权重$w1$、$w2$、$w3$和偏执$b$做为一个参数向量
,经过计算两个向量的内积来计算z,这时咱们发现变量向量的长度是3,而权重和偏执的向量是4,因此咱们须要使用1做为b的系数加入到变量向量中。$$left[ x_1 ,x_2,x_3,1right]\\*\\left[ w_1 ,w_2,w_3,bright]\\=w_1*x_1+w_2*x_2+w_3*x_3+1*b$$
这不就是咱们上方使用的算法吗,这种向量的内积的计算方式虽然对人不太友好,可是计算机却更加擅长这种计算,在咱们真正撸代码的时候会用到这种方法。
评论请转至原文连接
本文来自纳兰小筑,本文不予回复,评论请追溯原文