扬中网站设计公司,建设的网站都是怎么赚钱,网站首页内链怎么做,wordpress doshortcode这里有Coursera吴恩达《深度学习》课程的完整学习笔记#xff0c;一共5门课#xff1a;《神经网络和深度学习》、《改善深层神经网络》、《结构化机器学习项目》、《卷积神经网络》和《序列模型》#xff0c;
第一门课#xff1a;神经网络和深度学习基础#xff0c;介绍一…这里有Coursera吴恩达《深度学习》课程的完整学习笔记一共5门课《神经网络和深度学习》、《改善深层神经网络》、《结构化机器学习项目》、《卷积神经网络》和《序列模型》
第一门课神经网络和深度学习基础介绍一些基本概念。四周
第二门课深度学习方面的实践严密的构建神经网络如何真正让它表现良好。超参数调整正则化诊断偏差和方差高级优化算法如Momentum和Adam算法。三周
第三门课学习如何结构化你的机器学习项目构建机器学习系统的策略改变深度学习的错误以及端对端深度学习。两周
第四门课大名鼎鼎的卷积神经网络CNN常应用于图像领域介绍如何搭建这样的模型包括卷积层池化层和全连接层这些组件经典模型VGG、AlexNet和LeNet-5以及ResNets和Inception系列。四周
第五门课序列模型如何将它们应用于自然语言处理以及其他问题。系列模型包括的模型有循环神经网络RNN长短期记忆网络LSTM模型应用于序列数据NLP或者语音识别或者编曲。三周
01 神经网络和深度学习Neural Networks and Deep Learning
1-1 深度学习概论 1-1 Coursera吴恩达《神经网络与深度学习》第一周课程笔记-深度学习概论
1-2 神经网络基础
1-2 Coursera吴恩达《神经网络与深度学习》第二周课程笔记-神经网络基础
1-3 浅层神经网络
1-3 Coursera吴恩达《神经网络与深度学习》第三周课程笔记-浅层神经网络 主要介绍神经网络、激活函数、梯度下降法、反向传播、随机初始化等 神经网络的基本结构包括输入层input layer隐藏层hidden layer和输出层output layer。然后以简单的2层神经网络为例详细推导了其正向传播过程和反向传播过程使用梯度下降的方法优化神经网络参数。同时我们还介绍了不同的激活函数比较各自优缺点讨论了激活函数必须是非线性的原因。最后介绍了神经网络参数随机初始化的必要性特别是权重W不同神经元的W不能初始化为同一零值。
1-4 深层神经网络 主要介绍深度神经网络、DNN的前向和反向传播、参数和超参数等 1-4 Coursera吴恩达《神经网络与深度学习》第四周课程笔记-深层神经网络
神经网络的层数是从左到右由0开始定义
当我们算神经网络的层数时我们不算输入层只算隐藏层和输出层。
4.8这和大脑有什么关系》What does this have to do with the brain? 那么神经网络跟人脑机制到底有什么联系呢究竟有多少的相似程度其实关联性不大。当你在实现一个神经网络的时候那些公式是你在做的东西你会做前向传播、反向传播、梯度下降法其实很难表述这些公式具体做了什么深度学习像大脑这样的类比其实是过度简化了我们的大脑具体在做什么但因为这种形式很简洁也能让普通人更愿意公开讨论也方便新闻报道并且吸引大众眼球但这个类比是非常不准确的。
一个神经网络的逻辑单元可以看成是对一个生物神经元的过度简化但它是极其复杂的单个神经元到底在做什么目前还没有人能够真正可以解释。这是值得生物学家探索的事情。
深度学习的确是个很好的工具来学习各种很灵活很复杂的函数学习到从x到y的映射在监督学习中学到输入到输出的映射。 .
在这个神经网络里面一个神经元就相当于一个逻辑回归函数所以上图中有很多逻辑回归函数其中每个逻辑回归都有自己的权重和自己的偏差这些权重和偏差就是参数。
图中红框表示的就是神经元多个神经元以不同的方式进行连接就会构成不同结构神经网络。神经元的连接方式是由人工设计的。
神经元神经元的结构如图所示 02 改善深层神经网络超参数调试、正则化以及优化Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization 2-1 深度学习的实践方面 主要介绍训练测试集划分、偏差和方差、正则化、Dropout、输入归一化、梯度消失与梯度爆炸、权重初始化、梯度检验等 2-1 Coursera吴恩达《改善深度神经网络》 第一周课程笔记-深度学习的实践方面 防止过拟合的两种方法正则化如L2 regularization和Dropout
2-2 优化算法 2-2 Coursera吴恩达《改善深度神经网络》第二周课程笔记-优化算法 主要介绍Mini-batch梯度下降、指数加权平均、Momentum梯度下降、RMSprop、Adam优化算法、衰减学习率、局部最优等 对原始数据集进行分割使用mini-batch 梯度下降算法
三种常用的加速神经网络学习速度的三种算法 动量梯度下降Momentum、 RMSprop Adam算法。其中Adam结合了动量梯度下降和RMSprop各自的优点实际应用中表现更好。
另外一种提高学习速度的方法学习率衰减learning rate decay 通过不断减小学习因子减小步进长度来减小梯度振荡。最后我们对深度学习中局部最优local optima的概念作了更深入的解释。
2-3 超参数调试和Batch Norm及框架 2-3 Coursera吴恩达《改善深度神经网络》第三周课程笔记-超参数调试、Batch正则化和编程框架
TensorFlow的优点在于建立了计算图computation graph通过用这个计算损失计算图基本实现前向传播TensorFlow已经内置了所有必要的反向函数回忆一下训练深度神经网络时的一组前向函数和一组反向函数而像TensorFlow之类的编程框架已经内置了必要的反向函数这也是为什么通过内置函数来计算前向函数它也能自动用反向函数来实现反向传播即便函数非常复杂再帮你计算导数这就是为什么你不需要明确实现反向传播这是编程框架能帮你变得高效的原因之一。
Batch归一化以及如何用它来加速神经网络的训练 03 结构化机器学习项目Structuring Machine Learning Projects 3-1 机器学习策略1 3-1 Coursera吴恩达《构建机器学习项目》 第一周课程笔记-机器学习策略1 查准率的定义是在你的分类器标记为猫的例子中有多少真的是猫。 查全率定义就是对于所有真猫的图片你的分类器A正确识别出了多少百分比。实际为猫的图片中有多少被系统识别出来
想想学车的时候一辆车有三个主要控制第一是方向盘steering方向盘决定我们往左右偏多少还有油门acceleration和刹车braking。就是这三个控制其中一个控制方向另外两个控制速度这样就比较容易解读。知道不同控制的不同动作会对车子运动有什么影响。所以正交化的概念是指可以想出一个维度这个维度是控制转向角还有另一个维度来控制速度那么就需要一个旋钮尽量只控制转向角另一个旋钮在这个开车的例子里其实是油门和刹车控制了速度。
首先你的算法对训练集的拟合很好这可以看成是你能做到可避免偏差很低。还有第二件事你可以做好的是在训练集中做得很好然后推广到开发集和测试集也很好这就是说方差不是太大。
练错误率和贝叶斯错误率的距离可避免偏差以及开发错误率和训练错误率的距离方差
解决可避免偏差的常用方法包括 Train bigger model Train longer/better optimization algorithms: momentum, RMSprop, Adam NN architecture/hyperparameters search 解决方差的常用方法包括 More data Regularization: L2, dropout, data augmentation NN architecture/hyperparameters search 3-2 机器学习策略2 3-2 Coursera吴恩达《构建机器学习项目》 第二周课程笔记-机器学习策略2 04 卷积神经网络Convolutional Neural Networks 4-1 卷积神经网络基础 4-1 Coursera吴恩达《卷积神经网络》 第一周课程笔记-卷积神经网络基础 卷积padding步长的概念卷积层池化层全连接层这些组件 4-2 卷积神经网络实例模型 4-2 Coursera吴恩达《卷积神经网络》 第二周课程笔记-深度卷积模型实例探究 上图是LeNet-5的网络结构假设有一张32×32×1的图片输入LeNet-5可以识别图中的手写数字比如像这样手写数字7。LeNet-5是针对灰度图片训练的所以图片的大小只有32×32×1。实际上LeNet-5的结构和我们上周讲的最后一个范例非常相似使用6个5×5的过滤器步幅为1。由于使用了6个过滤器步幅为1padding为0输出结果为28×28×6图像尺寸从32×32缩小到28×28。然后进行池化pooling操作在这篇论文发布的那个年代人们更喜欢使用平均池化而现在我们可能用最大池化更多一些。在这个例子中我们进行平均池化过滤器的宽度为2步幅为2图像的尺寸高度和宽度都缩小了2倍输出结果是一个14×14×6的图像。这张图片应该不是完全按照比例绘制的如果严格按照比例绘制新图像的尺寸应该刚好是原图像的一半。
接下来是卷积层用一组16个5×5的过滤器新的输出结果有16个通道。LeNet-5的论文是在1998年撰写的当时人们并不使用padding或者总是使用valid卷积这就是为什么每进行一次卷积图像的高度和宽度都会缩小所以这个图像从14到14缩小到了10×10。然后又是池化层高度和宽度再缩小一半输出一个5×5×16的图像。将所有数字相乘乘积是400。
下一层是全连接层在全连接层中有400个节点每个节点有120个神经元这里已经有了一个全连接层。但有时还会从这400个节点中抽取一部分节点构建另一个全连接层就像这样有2个全连接层。
最后一步就是利用这84个特征得到最后的输出我们还可以在这里再加一个节点用来预测y帽的值y帽有10个可能的值对应识别0-9这10个数字。在现在的版本中则使用softmax函数输出十种分类结果而在当时LeNet-5网络在输出层使用了另外一种现在已经很少用到的分类器。
相比现代版本这里得到的神经网络会小一些只有约6万个参数。而现在经常看到含有一千万10 million到一亿100 million个参数的神经网络比这大1000倍的神经网络也不在少数。
不管怎样如果我们从左往右看随着网络越来越深图像的高度和宽度在缩小从最初的32×32缩小到28×28再到14×14、10×10最后只有5×5。与此同时随着网络层次的加深通道数量一直在增加从1增加到6个再到16个 ①读到这篇经典论文时你会发现过去人们使用sigmoid函数和tanh函数而不是ReLu函数这篇论文中使用的正是sigmoid函数和tanh函数。这种网络结构的特别之处还在于各网络层之间是有关联的 ②经典的LeNet-5网络使用了非常复杂的计算方式每个过滤器都采用和输入模块一样的通道数量。论文中提到的这些复杂细节现在一般都不用了。 AlexNet首先用一张227×227×3的图片作为输入实际上原文中使用的图像是224×224×3但是如果你尝试去推导一下你会发现227×227这个尺寸更好一些。第一层使用96个11×11的过滤器步幅为4因此尺寸缩小到55×55缩小了4倍左右。然后用一个3×3的过滤器构建最大池化层f 3步幅为2卷积层尺寸缩小为27×27×96。接着再执行一个5×5的卷积padding之后输出是27×27×276。然后再次进行最大池化尺寸缩小到13×13。再执行一次same卷积相同的padding得到的结果是13×13×384384个过滤器。再做一次same卷积。再做一次同样的操作最后再进行一次最大池化尺寸缩小到6×6×256。6×6×256等于9216将其展开为9216个单元然后是一些全连接层。最后使用softmax函数输出识别的结果看它究竟是1000个可能的对象中的哪一个。 实际上AlexNet神经网络与LeNet有很多相似之处不过AlexNet要大得多。正如前面讲到的LeNet或LeNet-5大约有6万个参数而AlexNet包含约6000万个参数。当用于训练图像和数据集时AlexNet能够处理非常相似pretty similar的基本构造模块basic building blocks这些模块往往包含着大量的隐藏单元或数据这一点AlexNet表现出色。AlexNet比LeNet表现更为出色的另一个原因是它使用了ReLu激活函数。
下面提一些比较深奥的内容如果你并不打算阅读论文不听也没有关系。上图下方的红色笔记1第一点在写这篇论文的时候GPU的处理速度还比较慢所以AlexNet采用了非常复杂的方法在两个GPU上进行训练。大致原理是这些层分别拆分到两个不同的GPU上同时还专门有一个方法用于两个GPU进行交流。2论文还提到经典的AlexNet结构还有“局部响应归一化层”Local Response Normalization即LRN层这类层应用得并不多所以Andrew并没有专门讲。局部响应归一层的基本思路basic idea是假如这是网络的一块比如是13×13×256LRN要做的就是选取一个位置从这个位置穿过整个通道能得到256个数字并进行归一化。进行局部响应归一化的动机是对于这张13×13的图像中的每个位置来说我们可能并不需要太多的高激活神经元a very high activation。后来很多研究者发现LRN起不到太大作用现在并不用LRN来训练网络。 也叫作VGG-16网络。VGG-16网络没有那么多超参数这是一种只需要专注于构建卷积层的简单网络。首先用3×3步幅为1的过滤器构建卷积层padding参数为same卷积中的参数。然后用一个2×2步幅为2的过滤器构建最大池化层。因此VGG网络的一大优点是它确实简化了神经网络结构下面具体看看这种网络结构。 假设要识别这个图像224×224×3在最开始的两层用64个3×3的过滤器对输入图像进行卷积输出结果是224×224×64因为使用了same卷积通道数量也一样。注意这里没有画出所有的卷积层进行第一个卷积之后得到224×224×64的特征图接着还有一层224×224×64得到这样2个厚度为64的卷积层意味着我们用64个过滤器进行了两次卷积。接下来创建一个池化层池化层将输入图像进行压缩从224×224×64缩小到多少呢没错减少到112×112×64。然后又是若干个卷积层使用129个过滤器以及一些same卷积我们看看输出什么结果112×112×128。然后进行池化可以推导出池化后的结果是这样56×56×128。接着再用256个相同的过滤器进行三次卷积操作然后再池化然后再卷积三次再池化。如此进行几轮操作后将最后得到的7×7×512的特征图进行全连接操作得到4096个单元然后进行softmax激活输出从1000个对象中识别的结果。 VGG-16的16就是指这个网络中包含16个卷积层和全连接层。确实是个很大的网络总共包含约1.38亿个参数即便以现在的标准来看都算是非常大的网络。但VGG-16的结构并不复杂这点非常吸引人而且这种网络结构很规整quite uniform都是几个卷积层后面跟着可以压缩图像大小的池化层池化层缩小图像的高度和宽度。同时卷积层的过滤器数量变化存在一定的规律由64翻倍变成128再到256和512。作者可能认为512已经足够大了后面的层就不再翻倍了。无论如何每一步都进行翻倍或者说在每一组卷积层进行过滤器翻倍操作正是设计此种网络结构的另一个简单原则another simple principle。这种相对一致的网络结构对研究者很有吸引力而它的主要缺点downside是需要训练的特征数量非常巨大。 Andrew最喜欢它的一点是随着网络的加深图像的高度和宽度都在以一定的规律不断缩小每次池化后刚好缩小一半而通道数量在不断增加而且刚好也是在每组卷积操作后增加一倍。图像缩小的比例和通道数增加的比例是有规律的。 2.3 残差网络(ResNets)》Residual Networks (ResNets) 非常非常深的神经网络是很难训练的因为存在梯度消失和梯度爆炸问题。这节课我们学习跳跃连接Skip connection它可以从某一层网络层获取激活然后迅速反馈给另外一层甚至是神经网络的更深层。利用跳跃连接构建能够训练深度网络的ResNets有时深度能够超过100层。ResNets是由残差块Residual block构建的首先看一下什么是残差块。
假设使用标准优化算法梯度下降法等训练一个普通网络如果没有残差没有这些捷径或者跳跃连接凭经验你会发现随着网络深度的加深训练错误会先减少然后增多。而理论上随着网络深度的加深应该训练得越来越好才对网络深度越深模型效果越好。但实际上如果没有残差网络对于一个普通网络来说深度越深意味着用优化算法越难训练随着网络深度的加深训练错误会越来越多。
但有了ResNets就不一样了即使网络再深训练的表现却不错比如说训练误差减少就算是训练深达100层的网络也不例外。对x的激活或者这些中间的激活能够到达网络的更深层。这种方式有助于解决梯度消失和梯度爆炸问题在训练更深网络的同时又能保证良好的性能。
4-3目标检测 主要介绍目标定位、目标检测、Bounding Box预测、交并比、非最大值抑制NMS、Anchor box、YOLO算法、候选区域region proposals等 4-3 Coursera吴恩达《卷积神经网络》 第三周课程笔记-目标检测
4-4 特殊应用人脸识别和神经风格迁移 主要介绍人脸识别、one-shot学习、Siamese网络、Triplet损失、风格迁移、内容损失、风格损失、1D-3D卷积等 4-4 Coursera吴恩达《卷积神经网络》 第四周课程笔记-特殊应用人脸识别和神经风格转换
05 序列模型(Sequence Models) 5-1 循环神经网络 主要介绍循环神经网络、不同类型的RNN、语言模型、新序列采样、RNN梯度消失、GRU、LSTM、双向RNN、深层RNNs等 5-1 Coursera吴恩达《序列模型》 第一周课程笔记-循环序列网络(RNN) 5-2 自然语言处理和词嵌入 主要介绍词汇表征、Word Embedding、嵌入矩阵、Word2Vec、负采样、GloVe词向量、情感分类、词嵌入消除偏见等 5-2 Coursera吴恩达《序列模型》 第二周课程笔记-自然语言处理和词嵌入
5-3 序列模型和注意力机制 主要介绍序列到序列模型、集束搜索Beam search、集束搜索误差分析、Bleu得分、注意力模型、注意力权重、语音识别、触发字检测等 5-3 Coursera吴恩达《序列模型》 第三周课程笔记-序列模型和注意力机制
06 人工智能大师访谈 【人工智能行业大师访谈1】吴恩达采访 Geoffery Hinton
【人工智能行业大师访谈2】吴恩达采访 Pieter Abbeel
【人工智能行业大师访谈3】吴恩达采访 Ian Goodfellow
【人工智能行业大师访谈4】吴恩达采访Yoshua Bengio
【人工智能行业大师访谈5】吴恩达采访林元庆
【人工智能行业大师访谈6】吴恩达采访 Andrej Karpathy
【人工智能行业大师访谈7】吴恩达采访 Ruslan Salakhutdinov