草庐IT

umich cv-6-2 注意力机制

这节课中介绍了循环神经网络的第二部分,主要引入了注意力机制,介绍了注意力机制的应用以及如何理解,在此基础上建立了注意力层以及transformer架构注意力机制注意力机制应用与理解注意力层transformer注意力机制上次我们没有提到sequencetosequence的RNN结构:以文字翻译应用为例,我们可以看到它由编码器与解码器组成,先是将我们要翻译的句子拆分成一个个输入向量,和之前vanilla架构做的事情一样,经过权重矩阵不断生成新的隐藏层,最终得到最初的解码状态与一个上下文向量,相当于把原始的信息都编码到这两个结果之中,然后解码器再利用上下文向量与s,不断生成新的s,同时将输出的y

umich cv-6-1 循环神经网络基本知识

这节课中介绍了循环神经网络的第一部分,主要介绍了循环神经网络的基本概念,vanilla循环网络架构,RNN的一些应用,vanilla架构的问题,更先进的rnn架构比如GRU和LSTM循环神经网络基本知识vanilla循环网络架构应用与理解vanilla架构的问题LSTMvanilla循环网络架构在之前的讨论中,我们往往以图像分类问题为基础然后展开,训练网络,输入图像,然后我们可以得到相应的图像标签,但在实际中,我们可能还会需要处理一些序列问题,比如说输入一个图像,我们希望能得到一组单词,表示图像的内容,或者说输入一个视频也就是输入一系列的图像,得到一个标签,或者说输入一组单词,我们能够将其翻译

umich cv-5-1 神经网络训练1

这节课中介绍了训练神经网络的第一部分,包括激活函数的选择,权重初始化,数据预处理以及正则化方法训练神经网络1激活函数数据预处理权重初始化正则化方法激活函数这部分主要讨论我们之前提到的几种激活函数的利弊:首先我们看sigmoid函数,这种激活函数有着激活函数中常见的优点与缺点:优点方面,它可以使数据分布在0-1之间,可以很好地表示神经元的饱和放电现象缺点方面我们考虑使用这个激活函数进行梯度的反向传播:我们可以看到在x=10或者x=-10时,传播的梯度都会接近于0,导致后面的所有梯度均变为0,这就会导致梯度消失,我们的神经网络无法学习同时,sigmoid激活函数的输出并不是以0为中心:我们知道w梯

umich cv-5-2 神经网络训练2

这节课中介绍了训练神经网络的第二部分,包括学习率曲线,超参数优化,模型集成,迁移学习训练神经网络2学习率曲线超参数优化模型集成迁移学习学习率曲线在训练神经网络时,一个常见的思路就是刚开始迭代的时候学习率较大,然后随着迭代次数的增加,学习率逐渐下降,下面我们就来介绍几种学习率下降的方法:第一种方法是我们在某些特定的迭代节点,将学习率乘以某个值比如0.1,这种方法显然又引入了更多的超参数,我们不想这样做,所以又设计了其它的下降曲线比如上图的coslinear等等我们有时会发现保持学习率不变也是个不错的选择实际上不同下降方法之间没有明显的对比统计,大多是根据不同领域习惯选择不同方法,比如计算机视觉用

umich cv-4-1 卷积网络基本组成部分介绍

这节课中介绍了卷积网络的基本组成部分(全连接层,激活函数,卷积层,池化层,标准化等),下节课讨论了卷积神经网络的发展历史以及几种经典结构是如何构建的卷积网络组成部分前言卷积层池化层normalization前言在之前提到的全连接神经网络中,我们直接把一个比如说32*32*3的图像展开成一个3072*1的向量,然后使用向量与权重矩阵点积得到结果,这实际上是不太合理的,从某种意义上说,我们破坏了原本图像的空间信息,把它简单的看成一个一维向量,而在卷积神经网络中,我们引入了卷积层,能够帮助我们在保存原本图像的空间信息的情况下,对图像特征进行提取卷积层如上图所示我们引入了一个卷积核或者说filter,

umich cv-4-2 经典卷积网络架构

这节课中主要讨论了卷积神经网络的发展历史以及几种经典结构是如何构建的卷积网络经典结构AlexNetVGGGoogleNetResidualNetworkAlexNet在2012年的时候,Alexnet神经网络提出,这时网络的架构比如说各个层之间要如何排列组合,使用多少卷积层池化层,每个层又如何设置超参数其实没有什么规律,主要通过实验与试错:但是我们通过对内容容量,可学习参数以及浮点运算次数的计算,可以看到一些有趣的规律,绝大多数的内容容量都使用在了卷积层,绝大多数的可学习的参数都在全连接层,绝大多数的浮点运算都发生在卷积层在2013年又提出了ZFNet,其实只是一个更大的AlexNet:VGG

umich cv-3-2

UMICHCVNeuralNetwork既然谈到神经网络,我们肯定要讨论在神经网络中是如何进行梯度的计算以及参数的优化的传统的方法就是我们手动计算梯度,但是随着神经网络层数的增加,这种方法显然过于复杂因此我们引入了计算图的概念,从一个简单的例子出发:我们可以把一个(x+y)z的计算式拆分成上图所示,向前传播就是计算出我们的输出结果,一步步而反向传播是为了计算梯度,比如说我们想要f对x,y,z的偏导求f对y的偏导我们可以根据链式法则来计算:用专业的语言,我们要求下游梯度,现在我们在当前一个节点,可以很容易求出当前梯度,上游再将之前计算出的上游梯度传递给我们,我们就可以计算出下游梯度:举一个更复杂

umich cv-3-1

UMICHCVNeuralNetwork对于传统的线性分类器,分类效果并不好,所以这节引入了一个两层的神经网络,来帮助我们进行图像分类可以看出它的结构十分简单,x作为输入层,经过max(0,W1*x)到达h隐藏层,再经过W2到达s输出层如果我们对隐藏层的结果进行可视化,我们可以看到如下的图像:相对于之前线性分类器每类提供的单一的模板,显然神经网络能够为我们提供更多的选择,这也是为什么它能帮助进行分类的一个重要原因如果我们想要扩展网络层数,也可以这样做:这样就得到了一个更复杂的神经网络注意到上述表达式均包含一个max表达式,它的作用是什么?实际上这个函数通常被称为ReLu函数,作为激活函数,目的

umich cv-2-2

UMICHCVLinearClassifiers在上一篇博文中,我们讨论了利用损失函数来判断一个权重矩阵的好坏,在这节中我们将讨论如何去找到最优的权重矩阵想象我们要下到一个峡谷的底部,我们自然会选择下降最快的斜坡,换成我们这个问题就是要求权重矩阵相对于损失函数的梯度函数,最简单的方法就是使用定义法:我们也可以使用解析梯度,这里需要用到矩阵对向量,矩阵对标量求导的一些知识,在后面我们也会采用反向传播的方法,因为自己手算微积分毕竟比较容易出错,尤其是涉及到很多层神经网络的时候。在作业assignment2的第一个线性分类器的实现中,我们会使用两张种损失函数,分别是svm与softmax函数,需要我

umich cv-2-1

UMICHCVLinearClassifiers对于使用线性分类器来进行图片分类,我们可以给出这样的参数化方法:而对于这样一个式子,我们怎么去理解呢?首先从代数的角度,这个f(x,W)就是一张图片的得分,我们可以将一张图片所有的像素点输入,乘以一个权重矩阵,再加上一个偏置项b,就得到f(x,W)举个具体的例子:上面权重矩阵有三行分别对应三种类别,有四列每列对应着一个像素点的权重,最终得到的结果也是一个三行的矩阵,每一行对应着该图片在每个类别上面的得分下面这张图应该会更加直观:对于f(x,W)=Wx+b这个式子,我们也可以选择把偏置项合并,呈现下面这个形式:其次我们从可视化的角度来看,线性分类器
12