全连接神经网络

单个神经元

  人们根据生物神经元(Neuron)的结构抽象出了神经元的的数学模型。
全连接神经网络
  神经元输入向量x=[x1,x2,...,xn]T\bm{x}=[x_1,x_2,...,x_n]^T,经过函数映射:fθ:xyf_\theta: x →y 后得到输出yy,其中 θ\theta 为函数 ff 自身的参数。
  考虑一种简化的情况,即线性变换:f(x)=wTx+bf(x)=\bm{w^Tx} + b,展开为标量形式:
f(x)=w1x1+w2x2+...+wnxn+bf(\bm{x})=w_1x_1+w_2x_2+...+w_nx_n + b参数θ={w1,w2,...,wn,b}\theta= \{w_1,w_2,...,w_n,b\} 确定了神经元的状态。这就是神经元线性模型(单神经元模型)

感知机

  1943 年,美国神经科学家 Warren Sturgis McCulloch 和数理逻辑学家 Walter Pitts 从生物神经元的结构上得到启发,提出了人工神经元的数学模型,这进一步被美国神经物理学家 Frank Rosenblatt 发展并提出了感知机(Perceptron)模型
全连接神经网络
  感知机接受长度为n的一维向量x=[x1,x2,...,xn]T\boldsymbol{x}=[x_1,x_2,...,x_n]^T,每个输入节点通过权值为wiw_i, ????????[1,n]的连接汇集为变量zz,即:
z=w1x1+w2x2+...+wnxn+bz=w_1x_1+w_2x_2+...+w_nx_n + b
  其中 ???? 称为感知机的偏置(Bias),一维向量w=[w1,w2,...,wn]T\boldsymbol{w} = [w_1,w_2,...,w_n]^T 称为感知机的权值(Weight),zz称为感知机的净活性值(Net Activation)。感知机是线性模型,并不能处理线性不可分问题。通过在线性模型后添加**函数后得到活性值(Activation) aa :
a=σ(z)=σ(wTx+b)a = \sigma(z) = \sigma(\boldsymbol{w^Tx} + b)
  其中**函数可以是阶跃函数(Step function),也可以是符号函数(Sign function)。添加**函数后,感知机可以用来完成二分类任务。但是,阶跃函数和符号函数在zz = 0处是不连续的,其他位置导数为 0,所以无法利用梯度下降算法进行参数优化。
  阶跃函数:
  全连接神经网络
  符号函数:
  全连接神经网络
  以感知机为代表的线性模型不能解决异或(XOR)等线性不可分问题,这直接导致了当时新兴的神经网络的研究进入了低谷期。

全连接神经网络

  感知机模型的不可导特性严重约束了它的潜力,使得它只能解决极其简单的任务。实际上,现代深度学习动辄数百万甚至上亿的参数规模,但它的核心结构与感知机并没有多大差别。它在感知机的基础上,将不连续的阶跃**函数换成了其它平滑连续可导的**函数,并通过堆叠多个网络层来增强网络的表达能力。
  通过替换感知机的**函数,同时并行堆叠多个神经元,可以实现多输入、多输出的网络层结构。例如,构建一个3输入节点、2输出节点的网络层。
全连接神经网络
整个网络层可以通过矩阵关系式表达:
全连接神经网络
O=X@W+b\bm{O} = \bm{[email protected]+ b}
@ 表示矩阵乘法。

  由于每个输出节点与全部的输入节点相连接,这种网络层称为全连接层(Fully-connected Layer),或者稠密连接层(Dense Layer),w\bm{w}矩阵叫做全连接层的权值矩阵,????向量叫做全连接层的偏置向量。
  通过层层堆叠全连接层,保证前一层的输出节点数与当前层的输入节点数匹配,即可堆叠出任意层数的网络。这种由神经元相互连接而成的网络就叫做全连接神经网络
全连接神经网络
  由于感知机模型与神经元模型的本质是一样的,所以有时候多层全连接神经网络也被叫做多层感知机(MLP)