Lecture4
单变量的情况优化问题通常是寻找使函数$f(x)$取得最小值的$x$。高中的时候我们就学过求极值的问题,解题的思路一般分为两步:1)先通过一阶导数为0求得函数的转折点。2)然后计算转折点的二阶导数来判断是极小值点还是极大值点(有可能是转折点)。整个的计算过程如图所示:
在单变量的函数中一阶导数为0的点通常有三种情况:极小值点,极大值点和拐点。为了得到函数的极小值通过二阶导数来进行判断,二阶导数的取值可以分为3种情况:
1) $\frac{d^2f(x)}{dx^2} \gt0$ 为极小值点
2) $\frac{d^2f(x)}{dx^2} \lt0$ 为极大值点
3) $\frac{d^2f(x)}{dx^2} =0$ 为拐点
三种情况如图所示
上述所讨论的情况都是针对于单变量的,当函数变为多变量的时候问题会变的稍微有点复杂,多变的情况也是神经网络所优化的形式。
多变量的情况对于多变量函数的优化问题同样是寻找函数的转折点。在开始之前先引入多变量函数的”一阶导数”和”二阶导数”。对于多变量函数来说一阶导数的转置是函数的梯度,梯度的方向是函数增长最快的方向,如图所示: ...
Lecture2-What can a network represent
Multi-layer Perceptrons as universal Boolean functions
MLPs are universal Boolean functions
Any function over any number of inputs and any number of outputs
But how many “layers” will they need?
在多层感知机表达布尔表达式的时候多少层是适合的。如下面的真值表,真值表就是一个布尔表达式。
上图中的真值表是使用合取范式的形式表示的还没有化简,用多层感知机来对上述的表达式进行表示。如图表达式中第一项可以表示为各个项的AND操作,如图中的第一个神经元。后续的操作可以增加相应的神经元。如下图所示
通过上述的表示得到如下的结论:
任何的真值表都可以用这种方式来表示
A $\color{red}{one-hidden-layer}$ MLP is a Universal Boolean Function
如上的卡诺图所示,每个黄色的区域为1,白色的区域为0,则 ...
Lecture1-Introduction
You will not become an expert in one course
Topics
基本的神经网络
MLPs
Convolutional networks
Recurrent networks
Boltzmann machines
一些高级的网络
Generative models: VAEs
Adversarial models: GANs
课程中涉及到的一些topics
Computer vision: recognizing images
Text processing: modeling and generating language
Machine translation: Sequence to sequence modeling
Modelling distributions and generating data
Reinforcement learning and games
Speech recognition
Perceptron本章节的前面部分主要是讲解的一些历史的发展,感兴趣可以翻看课件。下面主要从Perceptron开始。 ...
Recurrent Networks:Stability analysis and LSTMs
“BIBO” Stability
Time-delay structures have bounded output if
The function $f()$ has bounded output for bounded input(which is true of almost every activation function)
$X(t)$ is bounded
“Bounded Input Bounded Output” stability This is a highly desirable characteristic
下面的部分来分析RNN是否具有”BIBO”的性质,为了便于分析,课程中先是用线性的激活函数来分析后面进行推广。
Linear systems
Easier to analyze linear systems
Will attempt to extrapolate to non-linear systems subsequently
All activations are identity functions
所 ...
数据增广
图像分类任务中,数据增广是一种非常有用的正则化方法,可以有效的提升图像分类的效果,尤其对于数据不足或者模型网络较大的场景。图像增广的方法可以分为3类,$\color{orange}{图像变换类}$, $\color{orange}{图像剪切类}$,$\color{orange}{图像混叠类}$。图像变换类是指对全图进行一些变换,图像裁剪类是指对图像以一定的方式遮挡部分区域的变换,图像混叠类是指对多张图进行混叠为一张新图的变换。
1、图像变换类AutoAugmentRandomAugment2、图像裁剪类CutOut$\color{orange}{Cutout}$在训练的时候随机把图片的一部分剪掉,这样能够提高模型的鲁棒性。CutOut可以理解为Dropout的一种扩展的操作,不同的是Dropout是对图像经过网络后生成的特征进行遮挡,而Cutout是直接对输入的图像进行遮挡,相当于Dropout对噪声的鲁棒性更好。作者在论文中进行了详细的说明,这样做有一下的两点优势:(1)通过Cutout可以模拟真实场景中主题被部分遮挡时的场景;(2)可以促进模型充分利用图像中更多的内容(contex ...
bag of tricks for classification
Linear scaling learning rate使用大的batch size可能会减慢模型的训练过程。对于凸优化的问题,随着batch size的增加,收敛的速度会降低,神经网络也有类似的验证结果。随着batch size的增大,处理相同数据量的速度会越来越快,但是到达相同精度所需要的epoch数量会越来越多。也就是说,相同的epoch数量,大的batch_size训练的模型比小的batch_size训练的模型相比,验证准确率会减小。在mini-batch随机梯度下降中,梯度下降的值是随机的,因为每一个batch的数据是随机的选择,增大batch size不会改变梯度的期望,但是会降低它的方差。也就是说,大的batch size会降低梯度中的噪声,所以我们可以通过增大学习率来加快收敛的速度。在论文Bag of Tricks for Image Classification with Convolutional Neural Networks中介绍的是,在ResNet原论文中,batch size为256时候学习率为0.1,当把batch size 变为一个比较大的数b的时候,学习 ...
nn.NLLLoss() nn.CrossEntropyLoss() nn.KLDivLoss()的区别
nn.NLLLoss() nn.CrossEntropyLoss() nn.KLDivLoss()的区别1234import torchimport torch.nn as nnimport torch.nn.functional as Ftorch.manual_seed(1)
<torch._C.Generator at 0x1ea98f1deb0>12input = torch.randn(3, 4) # 输出假设为三个样本,四种类别input
tensor([[ 0.6614, 0.2669, 0.0617, 0.6213],
[-0.4519, -0.1661, -1.5228, 0.3817],
[-1.0276, -0.5631, -0.8923, -0.0583]])$$\text{Softmax}(x_{i}) = \frac{\exp(x_i)}{\sum_j \exp(x_j)}$$
12softmax = nn.Softmax(dim=1) # dim=1按着行向量相加为1softmax(i ...
cmu11-785-rnn1
Modelling SeriesIn many situations one must consider a $\color{red}{series}$ of inputs to produce an output– Outputs too may be a series例如下面的几个例子1、What Did I say?2、what is he talking about?3、Should i invest…
Representational shortcut
在每一个时刻的输入是向量
每一层有很多神经元(输出层也可能有很多的神经元)
用一个简单的box来代替以上所有(每一个box实际上代表着有很多层的神经元)
如图所示
The stock predictor
The sliding predictor
Look at the last few days
This is just a convolutional neural net applied to series data
Also called a Time-Delay neural ...
cs231n-assignment3
作业三中总共有五个问题,前两个问题分别是自己实现一个RNN和LSTM来做图像captioning,问题三是对神经网络的几个可视化,问题四是我们经常看到的风格迁移,最后一个问题是生成对抗网络,下面将对每个问题进行详细的阐述。所有作业的实现都已经上传到GitHub。
Q1: Image Captioning with Vanilla RNNs在Q1和Q2所用到的训练数据集是Microsoft COCO,其中数据进行了预处理,全部的数据特征都是从VGG-16的fc7层中提取的,VGG网络是在ImageNet数据集上预训练好的。通过VGG网络提取的预处理的特征分别存储在train2014_vgg16_fc7.h5和val2014_vgg16_fc7.h5中。为了在速度和处理时间上节省内存,这里使用PCA对提取的特征进行了降维,将VGG-16提取的4096维度降到了512维,存储在train2014_vgg16_fc7_pca.h5和val2014_vgg16_fc7_pca.h5中。为了便于训练每个单词都有一个ID与其对应,这些映射存储在coco2014_vocab.json。下图为训练的数据 ...