0%

1 简介

  在本系列文章中,我有跟大家分享过神经网络中两种经典层:卷积层(CNN)全连接层(FC),这两种层的输入数据分别是:特征向量和图像(张量),在具体实现时输入的多样本之间是相互独立的,无联系关系。而且,卷积神经网络利用数据的局部相关性和权值共享的思想大大减少了网络的参数量,非常适合于图片这种具有 空间(Spatial) 局部相关性的数据,但自然界的信号除了具有空间维度之外,还有一个 时间(Temporal) 维度。具有时间维度的数据(也称作序列数据)有以下特点:

  • 不同样本之间存在相互关联;
  • 模型的输出不仅 取决于当前输入,也受历史输入的影响。

因此卷积神经网络并不擅长处理此类数据,本博客要介绍的循环神经网络可以较好地解决此类问题。
  常见的序列数据有:语言、音乐、视频、股票、文字、DNA等等。

2 序列表示方法

阅读全文 »

前言

  卷积神经网络发展非常迅速,应用非常广阔,所以近几年的卷积神经网络得到了长足的发展,下图为卷积神经网络近几年发展的大致轨迹。

在这里插入图片描述

  1998年LeCun提出了 LeNet,可谓是开山鼻祖,系统地提出了卷积层、 池化层、全连接层等概念。2012年Alex等提出 AlexNet,提出 一些训练深度网络的重要方法或技巧,如 Dropout、ReLu、GPU、数据增强方法等,随后各种各样的深度卷积神经网络模型相继被提出,其中比较有代表性的有 VGG 系列,GoogLeNet 系列,ResNet 系列,DenseNet 系列等,他们的网络层数整体趋势逐渐增多。以网络模型在 ILSVRC 挑战赛 ImageNet数据集上面的分类性能表现为例,如下图,在 AlexNet 出现之前的网络模型都是浅层的神经网络,Top-5(表示神经网络返回的前5个最大概率值代表的内容中有一个是正确的)错误率均在 25%以上,AlexNet 8 层的深层神经网络将 Top-5 错误率降低至 16.4%,性能提升巨大,后续的 VGG、GoogleNet 模型继续将错误率降低至 6.7%;ResNet 的出现首次将网络层数提升至 152 层,错误率也降低至 3.57%。
在这里插入图片描述

LeNet-5

阅读全文 »

1 池化层

  在上篇博客中,有跟大家分析过,在卷积层中没有 padding 的情况下,可以通过调节步长参数 $\boldsymbol{s}$ 实现特征图的高宽成倍缩小,从而降低了网络的参数量。但是在实际上我们通常使用 Same卷积,即输入和输出特征图的维度一样,这样一来将面临巨大的计算量挑战,而且容易产生过拟合的现象,因此我们需要一种专门的网络层可以实现尺寸缩减功能,它就是这里要介绍的 池化层(pooling layer),通常,池化操作也被称作 下采样
  池化层同样基于局部相关性的思想,通过从局部相关的一组元素中进行采样或信息聚合,从而得到新的元素值。下面介绍两种池化方式:

  • 最大池化(Max Pooling):选择 pooling 窗口中的最大值作为采样值;
  • 均值池化(Mean Pooling):将 pooling 窗口中的所有值相加取平均, 以平均值作为采样值。

在这里插入图片描述

不管采用什么样的池化函数,当输入作出少量平移时,池化能够帮助输入的表示近似 不变(invariant),对于平移的不变性是指当我们对输入进行少量平移时,经过池化函数后的大多数输出并不会发生改变。池化操作就是图像的 resize,平时一张狗的图像被缩小了一倍我们还能认出这是一张狗的照片,这说明这张图像中仍保留着狗最重要的特征,我们一看就能判断图像中画的是一只狗,图像压缩时去掉的信息只是一些无关紧要的信息,而留下的信息则是具有尺度不变性的特征,是最能表达图像的特征。说明池化能够提升模型的尺度不变性、旋转不变性。
  以 $\boldsymbol{5 × 5}$ 输入 $\boldsymbol{X}$ 的最大池化层为例,考虑池化窗口大小 $\boldsymbol{ k =2}$ ,步长 $\boldsymbol{s = 2}$ 的情况。

阅读全文 »

1 简介

  卷积网络(convolutional network)(LeCun, 1989),也叫做 卷积神经网络(convolutional neural network, CNN),是一种专门用来处理具有类似网格结构的数据的神经网络。例如时间序列数据(可以认为是在时间轴上有规律地采样形成的一维网格)和图像数据(可以看作是二维的像素网格)。卷积网络在诸多应用领域都表现优异。“卷积神经网络’’ 一词表明该网络使用了 卷积(convolution)这种数学运算。卷积是一种特殊的线性运算。卷积网络是指那些至少在网络的一层中使用卷积运算来替代一般的矩阵乘法运算的神经网络。
  卷积网络为什么会出现?得先看看更早时期提出的 全连接网络(Fully Connected Neural Network,FC)在处理类似图片数据时会出现的问题:

  • 参数过多;
  • 破坏图像的空间分布和像素之间的距离关系;

针对上述问题,图像的主要特点:

  • 图像的关键特征可能只是图像的一小部分;
  • 相同的特征可能出现在不同位置;
  • 对一张图像进行抽样,不改变预测目标。
阅读全文 »

一、Learning rate

前言

顾名思义,就是要给每个参数不同的learning rate,上一篇笔记中,我们提到了在沿着Loss函数我们可能会陷入local minima等一些gradient为零从而导致参数无法更新,Loss也就不再下降。但事实是当Loss不再下降的时候,gradient不一定很小,如下图在这里插入图片描述
当Loss很小时,gradient仍有在某时候是很大的,我们可以想象下面这样的情形导致的在这里插入图片描述
由图知道Loss不再下降并不是因为卡在local minima或者saddle point,而是因为此时的learning rate太大导致点更新的步伐过大使gradient在“山谷”两侧“反复横跳”导致Loss不再下降。再如下面这个例子:假设只有两个参数不断计算gradient来降低Loss在这里插入图片描述
我们的目的就是能够使黑点到达黄色点的地方,此时Loss最小,设黄色点为山谷最低端,两旁是山壁,前文有说到当Loss不再下降时可能是因为“反复横跳”:在这里插入图片描述
接下来可能就有一个疑问就是,为什么不把learning rate设低一点让黑点跨的步伐小一点进入中间地区呢?嗯,是个好疑问,我们把learning rate设为10e-7看看在这里插入图片描述
从图可以看出,虽然黑点不再反复横跳,但他仍然不能到达黄点,这是因为此时的Loss函数已经十分平缓,而learning rate又太小而导致他不能继续再往前,所以我们需要更加特殊的gradient descent

1.1 不同的参数需要不同的learning rate

当在某个地方的方向十分陡峭时我们就需要小的learning rate,反之需要大的learning rate在这里插入图片描述
按照普通的gradient descent,我们更新参数的方法是这样的在这里插入图片描述
而现在我们因为需要同时更新learning rate,所以将learning rate除以依赖于某个对应参数的未知参数δ在这里插入图片描述
下面来计算δ的值

阅读全文 »

一、机器学习任务攻略

1.1 Framework of ML

神经网络一共包含三个模块:训练模块、验证模块、预测模块。其中训练和验证模块共用数据是Training data,但要注意的是要把Training data分成训练和验证数据。
训练步骤包括三个步骤:
1、要先写出一个有未知参数的函数f(x),x为input,也叫做feature
2、定义Loss函数,输入为一组参数,计算这组参数所造成的误差
3、定义optimization,找到一组最为合适的参数θ*,使得Loss最小
预测部分是用训练好的θ对Testing data进行预测结果。

1.2 提高结果的准确性

检查training data的Loss

阅读全文 »

一、机器学习基本概念简介

1.1机器学习的定义

我们所要求机器所能为我们做的事情均离不开两个最要的模块:输入和输出。比如对于无人驾驶来说,汽车必须根据路段信息来决定车辆的行驶,在此过程中,路段信息就是输入,车俩的行驶就是输出,但问题是他是怎么让输入变成输出的呢。而这就是机器学习所需要做的事情:寻找一个函数根据输入而输出合理的操作,表示为f(输入)—> 输出,这也是机器学习的定义。

1.2函数的分类

在机器学习中我们知道其定义是找一个函数来根据输入做出合理的输出,在这里介绍两种常见函数:
1.Regression(回归函数):其输出是一个数值。如我们需要预测未来的PM2.5的浓度,当天的PM2.5浓度、气温、臭氧的浓度为输入然后经过一个回归函数来预测明天的PM2.5浓度。
在这里插入图片描述
2.Classification(分类函数):其输出为一个类别。如我们在收到邮件时,常常有些骚扰或者垃圾邮件,这些邮件便是输入,经过分类函数可以将这些归类到“垃圾邮件”类别之中
在这里插入图片描述

阅读全文 »

解决安装用pip tensorflow过程中的一些问题:
1.超时问题,使用镜像源下载

1
pip install tensorflow -i https://pypi.mirrors.ustc.edu.cn/simple/

2 TensorFlow 软件包依赖项出现冲突,要安装以下包

1
2
3
pip3 install six numpy wheel
pip3 install keras_applications==1.0.6 --no-deps
pip3 install keras_preprocessing==1.0.5 --no-deps

3.出现管理员权限问题

pip install …加入—user为pip install —user …

阅读全文 »

ModuleNotFoundError: No module named ‘tensorboard’
解决方法:用pip安装两个包

1
pip install tb-nightly或者pip install tb-nightly-gpu
1
pip install future

但安装过程中可能会出现问题超时等问题

所以建议使用镜像下载,我这里用的是豆瓣镜像:

阅读全文 »