MENU

神经网络从原理到Hello world--神经单元

• August 19, 2020 • Read: 4177 • Knowledge,Python,深度学习

什么是神经元?

生物学中的神经元

神经网络是由多个、多层的神经元组成的相互连接的网络,最简单就是全连接模型,而神经元是网络的基本组成元素,对于神经网络的认识应当首先了解、明白什么是神经元。机器学习中的神经元概念是人们基于生物学中的神经元抽象出来的。

在生物学中,一个神经元通常由细胞体(就是神经元本体)、轴突、树突组成,树突能够让神经元接收到别的神经元传递的信号,而轴突的作用是将本神经元的信号发送出去,相当于一个输入、输出。当然神经元并不可能只由一个输入,所以当他接收到多个输入信号后,神经元内部需要进行一些处理加工并且还要判断是否将这个信号进行输出。对于神经元来说,它会将所有的输入信息进行求和,自身单元通常都会有一个阈值,当这个总的信号强度超出阈值后,那么它就会发生响应,将信号进行输出。通常,神经元对于各个输入信号的敏感程度是不一样的,因此在计算输入信号总和时,采用加权求和更加合理。当这个信号和大于阈值时,它就要进行输出。神经元的输出是非常有特色的,不论有多少个接收对象,它输出的信号大小是固定的。因此,生物中神经元对象有如下几个特点。

  • 收到输入信号,将所有的输入进行加权求和,得到一个总的输入信号和。
  • 与自身单元的阈值进行比较,如果大于阈值,则会进行输出,小于则不响应
  • 如果处于激活状态,那么要把收到的信号进行输出,通常这个输出信号需要激活函数来描述,这个函数就是输入信号与输出信号的一个函数映射。

如果有3个输入信号,分别为$x_1、x_2、x_3$,那么加权求和后得到:

$$ w_1 x_1 + w_2 x_2 + w_3 x_3 $$

这样,输入信号的加权和与神经元的阈值进行比较。

$$ w_1 x_1 + w_2 x_2 + w_3 x_3 \geq \theta : \quad 输出信号\\ w_1 x_1 + w_2 x_2 + w_3 x_3 \geq \theta : \quad 不输出信号 $$

由于神经元的输出信号大小是固定的,不会受到输入信号大小的响应,只要满足“点火”条件,就会输出固定大小的信号,自然人们会想到用0或者1来描述输出大小,这也就是reLu激活函数的来源。

以上就是生物学中的神经元的概念。那么基于此概念,再来理解机器学习中的神经元就非常容易了。

神经网络中的神经元

在机器学习中的神经元,阈值通常用偏执bias来表示,为了更加符合数学习惯,判断点火条件通常进行一项,得到一个线性的多项式函数

$$ \sum_{i=1} ^n w_i x_i + b $$

与前述对比,可知这里的偏执$b = -\theta$。进行加权求和的目的是用这个值去判断神经单元是否“点火”,如果满足点火,那么就要进行输出、传播,不满足则不进行信号的传递,那么接下来的问题在于如何描述输出?前述提到生物学中的神经元在输出时非常具有特色,它会输出固定大小的信号强度,这样可以采用0或者1来描述输出,这样理解的话,可以知道我对门需要用输入的加权和去计算出输出结果,最简单的情况结果就是0或者1。更加广泛的定义是,输出信号是关于输入加权和的一个函数,而这个函数通常被称为激活函数(activation function)。如果$y$表示输出值的话,上述的映射的数学描述为:

$$ y = a(w_1 x_1 + w_2 x_2 + w_3 x_3 + b) $$

为了方便描述,将输出信号的加权和与单元偏置的和记作$z=w_1 x_1 + w_2 x_2 + w_3 x_3 + b$的话,则得到:

$$ y = a(z) $$

unit

0或者1是最为常见的一种,即如果神经元要进行输出,则只能输出1,如果不满足点火条件,就不进行输出,意味着输出0即可。为了能够实现这样的输出特性,reLu函数被引入,reLu也被称为单位跃阶函数。该激活函数使得神经网络中的神经元与生物学中的神经元输出性质十分相近。

$$ y = \begin{cases} 0, \quad z < 0\\ 1, \quad z \geq 0 \end{cases} $$

relu

除了reLu函数外,还有一个重要的激活函数是Sigmoid函数,它不像reLu那样一刀切方式的处理,当单元点火信号比较强烈,表明该单元处于较为兴奋状态,那么它的输出信号理所应当要大一点,而对于那些兴奋程度低的单元,输出值要小一点,这个函数的值域是0到1。仍然将输入信号压缩在0~1范围内。

$$ y = \frac{1}{1 + e^{-z}} $$

sigmod函数

总的来说,神经网络中的神经元具有接收输入、判断是否点火、进行输出这三个基本的过程。因为激活函数的存在,使得点火判断被包含在激活函数中,因此,神经元只需要进行加权求和,然后代入到激活函数中输出即可。

  • 接受输入后,该神经元对信号进行加权求和,还要包括偏置。
  • 带入到激活函数,计算输出。
Archives Tip
QR Code for this page
Tipping QR Code