CNN
卷积神经网络(Convolution Neural Network, CNN)最早使用于图像领域,通常有多个卷积层+池化层组成,最后再拼接全连接层做分类。卷积层主要是执行卷积操作提取图片底层到高层的特征,池化层主要是执行降采样操作,可以过滤掉一些不重要的高频信息。(降采样是图像处理中常见的一种操作)
神经网络
神经网络由大量的神经元相互连接而成。每个神经元接受线性组合的输入后,最开始只是简单的线性加权,后来给每个神经元加上了非线性的激活函数,从而进行非线性变换后输出。
X1和X2表示输入向量
w1、w2为权重,几个输入则意味着有几个权重,即每个输入都被赋予一个权重
b为偏置bias
g(z) 为激活函数
a 为输出
多个神经元组织在一起,便形成了神经网络。下图便是一个三层神经网络结构
tips: 什么网络的 输入层 隐藏层 输出层?
输入层(Input layer):众多神经元(Neuron)接受大量非线性输入讯息。输入的讯息称为输入向量。
输出层(Output layer):讯息在神经元链接中传输、分析、权衡,形成输出结果。输出的讯息称为输出向量。
隐藏层(Hidden layer):简称“隐层”,是输入层和输出层之间众多神经元和链接组成的各个层面。如果有多个隐藏层,则意味着多个激活函数。
卷积层
卷积计算层,线性乘积 求和。卷积层是CNN的核心。
对图像(不同的数据窗口数据)和滤波矩阵(一组固定的权重:因为每个神经元的多个权重固定,所以又可以看做一个恒定的滤波器filter)做内积(逐个元素相乘再求和)的操作就是所谓的『卷积』操作
绿色表示输入的图像,可以是一张黑白图片,0是黑色像素点,1是白色像素点。黄色就卷积核(kernal),也叫过滤器(filter)或特征检测器(feature detector),通过卷积,对图片的像素点进行加权,作为这局部像素点的响应,获得图像的某种特征。
卷积的过程,就是滑动这个黄色的矩阵,以一定的步长向右和向下移动,从而得到整个图像的特征表示。
举个例子:上图中输入的绿色矩阵表示一张人脸,黄色矩阵表示一个眼睛,卷积过程就是拿这个眼睛去匹配这张人脸,那么当黄色矩阵匹配到绿色矩阵(人脸)中眼睛部分时,对应的响应就会很大,得到的值就越大。
再举个例子:下图中左边部分是原始输入数据,图中中间部分是卷积层,图中右边是输出的新的二维数据。
激励层
激励层就是我们前面介绍神经单元的激励函数。
常用的非线性激活函数有sigmoid、tanh、relu
1.sigmoid函数g(z)的图形表示如下(把一个实数压缩至0到1之间,处理分类问题)
2.激活函数:ReLU,图形表示如下(收敛快,求梯度简单。)
池化层POOL
前面卷积的过程,实际上"重叠"计算了很多冗余的信息,池化就是对卷积后的特征进行筛选,提取关键信息,过滤掉一些噪音,通常用的是max pooling和mean pooling,取区域平均或者最大。
每个颜色的方框是卷积处理之后的矩阵,左上角矩阵的最大值是6,右上角矩阵的最大值是3,右下角矩阵最大值是4。同样池化可以用平均值来处理。
CNN层级结构示例
CONV:卷积层
RELU:激励层
POOL:池化层
卷积神经网络就是多层神经网络,不断卷积,激励,池化的结果,最终输出网络的判断结果。
文本卷积神经网络
在自然语言处理中,我们要处理的对象是文字,这里介绍的主要是文本卷积神经网络,首先我们将输入的query表示层词向量序列,然后使用卷积去处理输入的词向量序列,就会产生一个特征图(feature map),对特征图采用时间维度上的最大池化(max pooling over time)操作,就得到此卷积核对应的整句话的特征,最后,将所有卷积核得到的特征拼接起来即为文本的定长向量表示,对于文本分类问题,将其连接至softmax即构建出完整的模型。
在实际应用中,我们会使用多个卷积核来处理句子,窗口大小相同的卷积核堆叠起来形成一个矩阵,这样可以更高效的完成运算。另外,我们也可使用窗口大小不同的卷积核来处理句子,如上图,不同颜色表示不同大小的卷积核操作。