吴恩达深度学习笔记

news2025/3/13 18:47:42
B站看的视频,课太长了,180多节,但搬运的没有作业练习,最好找个能练习的
1,假设模型时,以前(2011版机器学习)用西塔代表参数组成的向量,现在用w代表参数组成的向量,b代表西塔0,x还是特征与样本组成的矩阵。
目的还是求系数w,进而确定模型。
比较一个样本的预测结果与实际结果的函数,是损失函数。很多样本的损失函数的平均值,就是代价函数。
2, 神经网络的特点就是,每一层的每一个单元,里面都有两个式子,左边是模型的,有自己的系数和b,右边是激活函数的。
神经网络的 激活函数,sigmod 只有二分法才用,但tanh 所有场合都比他优越,常用的默认激活函数是ReLU,不知道用哪个就用它。还有个leak ReLU。
3,为什么需要激活函数呢?因为如果没有激活函数(这也叫线性激活函数),那无论神经网络有多少层,多个线性函数的组合还是线性函数,它一直做的只是计算线性函数那就不如直接去掉隐藏层了,所以要引入非线性函数(激活函数)。
4, 正向传播是神经网络从左到右算出最终的预测值。 反向传播是从右到左,从输出开始,对左边的参数求导,目的是为了梯度下降。
5,神经网络参数的随机初始化不能是零,是比较小的数。
6,自己调试时, 核对神经网络每一层的矩阵维数,可以有效排查bug。
7,神经网络 正则化的方法:dropout,随机删除网络中的神经单元。
8, 梯度消失梯度爆炸,是指训练深度神经网络时,导数或坡度有时会变得非常大或非常小。 解决思路是初始化参数那个方向。
9, 梯度检验用来确保反向传播正确实施。
10, 加速梯度下降的方法:mini batch,momentum,root mean square prop,adam 。
11, 加速模型训练的方法:衰减学习率
12,前面讲的内容包含有很多参数,如何选择 参数的初始化值呢?用随机+合适的scale搜索合适的参数,而batch normalization算法使搜索参数变得很容易。
13,逻辑回归只应用于二分法,而应对多个分类,用 softmax回归。
14, 卷积。在图像识别中,识别边缘需要用到 f*f 的矩阵作为 过滤器
拿原图的像素矩阵 n*n,与过滤器矩阵做卷积运算,就能得到识别出的边缘。其中 卷积运算的过程,就是把过滤器矩阵依次放在原图像素矩阵上,使对应值先相乘再相加,结果值组成 (n-f+1) * (n-f+1)的新矩阵。
过滤器的参数有不同的设置方法,如果每个参数都通过反向传播不断调试并确定,那这个过滤器就可以识别处复杂的边缘。
卷积过程会有两个问题:原图像素多次卷积后变小;原图边缘的像素信息丢失。解决办法就是每次卷积前先扩展原图的像素,这个行为叫 padding,使用padding的卷积过程叫same(新矩阵为 (n+2p-f+1) * (n+2p-f+1),也就是卷积后像素不变,p的值取决于f,f通常为奇数),不用的叫valid(原图卷积后会变小)
15,卷积的 步长之前是1,如果是s,那么新矩阵为  ( (n+2p-f)/s+1) * ((n+2p-f)/s+1),若除以s不是整数就向下取整。
16,三通道的图,卷积过程为:原图为 n*n*通道数3,过滤器为 f*f*通道数3,这俩通道数必须相同,新矩阵为  (n-f+1) * (n-f+1) , 新矩阵中每一个元素都是 所有通道的过滤器大小的 元素之和(比如3*3=9,4个通道共36个数,他们的和就是新矩阵的一个元素),无论原图通道和过滤器通道有多少,只能得到一个新矩阵,如果有 多个过滤器,则得到多个新矩阵 堆叠在一起,类似长方体,大小为 (n-f+1) * (n-f+1) * 使用的过滤器个数。
17,过滤器每次的个数随意,图片经过过滤器得到新矩阵,这是一个隐藏层的计算过程,经历多个层的计算后,会得到一个最终的新矩阵,比如它是7*7*40,然后把它 展开成一个长长的向量,再把向量代入到逻辑回归或softmax回归,输出这个图片是不是预期的内容,比如图片里是不是有猫。
18,一个卷积神经网络通常有三层,卷积层, 池化层,全连接层。
最大池化max pooling就是通过最大化运算,选取过滤器(hyper parameter 是过滤器大小filter 和步长stride )中的最大值,组成新的小矩阵。卷积是把原图各元素先乘再加,最大池化是只取最大。
平均池化是只取过滤器中的平均值。
随着隐藏层的深入,矩阵的宽和高会不断缩小,通道数不断增大。
池化层在学术上可以和卷积层并称为一层,因为它没有权重,也可以被当作单独一个隐藏层。
超级参数的选择可以参考别人文献的架构。
19,和普通的全连接相比, 卷积的优势是参数共享和稀疏连接,这两招可以减少参数,从而能用更小的训练集训练它,从而预防过拟合。
20,神经网络例子
经典神经网络:LeNet5,AlexNet,VGG Net。
残差网络Resdual Network :就是普通的隐藏层之间(隔得远)增加捷径short cut或远跳连接skip connection ,连接覆盖的几个层,成为残差块residual block。对于普通神经网络, 深度越深,理论上错误率越来越低,但实际上是越难训练,所以错误率会先降再升,而残差网络会解决这个问题。代价就是,相当于被跳过的隐藏层没用了。
1*1卷积层给神经网络添加了一个非线性函数,从而保持输入层中的信道数量不变或减少信道数量,或增加。
inception 网络替我来决定过滤器的大小和要不要加卷积层或池化层。他就是应用各种过滤器,然后把输出连接起来。面对计算成本问题,可以通过1*1网络构建瓶颈层,从而降低计算成本。只要瓶颈层构建的合理,就不会降低网络性能。
21,网上有别人训练好的权重参数和代码,代码是单独的,训练好的权重参数单独写在一个文件里,而只下载代码,则需要自己找训练集训练参数然后写到文件里。训练好模型应用的流程就是一张新图片,进入代码,经过权重参数,在最后的softmax函数输出属于哪一类图。网上他们 开源的的权重参数已经经过长时间的训练和调优,性能很多,把他们都下载下来,只要修改最后的softmax函数改变要判断的类型即可,比如有个识别1000种狗的模型,你要迁移到识别三种猫。除了改softmax,还要把前面的隐藏层全部冻结,这样就不会更改人家之前的权重参数,如果自己的数据越多,就可以冻结的越少,因为可以自己训练。
22, 目标定位是在图片分类的基础上,增加四个数字输出作为框,一个数字输出pc作为判断是否只有背景。
还是在图片分类的基础上再加个概念叫 特征点,特征点检测是只检测图片中几个特征点(x,y坐标 ),然后分类时判断图片满足哪类的特征点,从而认出这个人,但这些特征点的训练集需要 人工标注去训练,权重练好了模型才能自己处理新图片。
目标检测是在图片上以某个固定步幅滑动窗口,输入给卷机网络处理,扫描完整张图片,如果框里有目标物体,卷机网络输出1,没有输出0。这就需要训练时先把样本用窗口标注出来。可以用卷积实现。
滑动窗口无法准确框住对象怎么办? YOLO(you only look once)算法用的方法是把图片划成 很多格子,对每个格子做目标定位,观察每个格子,如果有对象,将其 中点分配给所在格子,即使对象横跨多个格子,也会被分到其中一个格子。
23,如何判断目标检测算法运行良好呢?用 交并比计算检测正确的面积占窗口识别面积的比例,如果大于0.5或0.7等等,说明算法还不错。
24, 非最大抑值(non-max suppression),在窗口密集的情况下,目标会被检测出多次,这个方法可以只显示概率最高的窗口(也就输出概率最大的分类结果,但抑制很接近,但不是最大的其他预测结果)
25,anchor box用来处理一个窗口中有多个对象。
region proposals候选区域
26, 人脸识别,可以采用similarity 函数对比两张图片,如果 相似度低于某个值,说明图片中是同一个人。实现这个功能的网络叫Siamese network ,原理是图片进入卷积网络经过最后的编码函数输出为一个128维编码,两个图片的编码距离小就说明是同一个人。
人脸识别卷积网络,参数训练的方法:Triplet loss。
27,神经风格迁移 neural style transfer 
这个算法的实现是:以原图和结果图为参数组成代价函数,再以风格图和结果图为参数组成代价函数,两个代价函数之和组成最终的代价函数,使用梯度下降最小化他,就能得到模型参数。
28, 序列化模型sequence model 
每个训练样本都有自己的长度,每个训练样本的输出也有自己的长度。
one hot方法通过字典定位一个训练样本中的每个单词,输出每个单词的向量,输出长度就是向量个数。
29, 循环神经网络:一个训练样本中的每个单词,都输入到一个隐藏层,然后输出这个单词的向量。每个单词输入到隐藏层的权重参数为W_ax,激活值由权重参数W_aa决定,输出结果由W_ya决定。前一个单词的隐藏层产生的激活值会影响后一个单词的隐藏层。每一层都计算预期y与实际y之间的损失函数,所有层的损失函数之和就是最终的损失函数。
所以循环神经网络在某一时刻的预测仅使用了序列中之前的输入信息,并没有使用序列中后面的输入信息。
循环神经网络的激活值的 激活函数经常选用 tanh,输出结果y的 激活函数由输出类型决定,二分类问题用sigmoid 激活函数,k分类问题用softmax。
循环神经网络的反向传播就是把正向传播所有箭头反过来,叫做 backpropagation through time
30,前面讲的是1个输入对应1个输出的 循环神经网络结构,此外还有多对1,多对多(其中也有输入长度和输出长度不一致的),1对多。

31, 语言模型language model 会告诉你某个特定的句子,它出现的概率是多少。语言模型衍生出两个系统,语音识别和机器翻译。语言模型的基本工作,就是把一个输入的文本序列搞成P(y^1,y^2……y^ty)形式,然后估计句子中各个单词出现的可能性。
建立循环神经网络时,每一层的激活函数a都会在当前时刻以上一个单词的正确答案(训练时会用正确的,处理新数据时就用前一个预测的输出,也不管他是不是真的对)为输入和条件概率计算整个字典中出现某个单词(比如字典有1万个单词,这个单词是个1万维向量,除了单词所在位置值,其他维都是0)的概率(乘法公式),找概率最大的通过softmax把他作为输出y^几。最后定义损失函数,就可以训练了
32,训练一个模型之后,想要了解这个模型学到了什么,一个非正式的方法就是对这个模型进行 新序列采样:就是训练好的模型的softmax函数的第一个序列的输出是各种词的概率,随机选一个词作为y^1的输出,后面就不用管了,它会自己传递,直到采样到结束符或长度达到了设定的长度就结束。
33,循环神经网络的 梯度消失问题:随着训练层数的增加,导数可能指数级地增大,如果遇到了梯度爆炸,用 梯度修减gradient clipping 解决,导数也可能指数级地减小,遇到梯度消失。GRU gated recurrent unit 门控循环单元,它改善了循环神经网络的隐藏层,使其能更好地捕捉深层连接,并改善了梯度消失问题
GRU会在处理一次任务时,产生一个新变量c,代表记忆细胞memory cell,它存储T时刻的激活值a,然后经过函数计算可以更新c值,后面GRU的门会决定每当进行到下一个时刻是否更新c
34, 长短期记忆Long short term memory ,它比GRU捕捉 深层连接的效果更好,也是单元。他有更新门,遗忘门,输出门,当前时刻的门的值不仅取决于上一个时刻的激活值a和当前时刻的输入x,也取决于上一个记忆细胞的值,然后偷窥孔连接 peephole connection 就可以结合三个门来做计算。
35,上面介绍了除RNN标准单元以外的其他两种单元,下面介绍两种RNN模型。
双向循环神经网络,这个模型可以让你在序列的某点处不仅可以获取之前的信息,还可以获取未来的信息。实现方式就是每个RNN单元都有两个,一个管顺序,一个管逆序。NLP就是使用LSTM单元的双向RNN,但需要获取完整的句子。
深层循环神经网络,就是把RNN的一层变多层,多层堆叠在一起,原来的神经网络每一层都有一组激活值a,前面讲的RNN都是一层a,现在也堆成多层。如下图

36,接下来讲GRU、LSTM在 NLP中的应用。
词嵌入word embedding ,这是词语表达的一种方式,可以让算法自动理解类似的词比如男人女人、国王王后等。具体实现就是在 前面31单词向量的基础上,给每个单词建立特征,特征可能有几百个,这几百个特征的值就组成了这个单词的特征向量。把这几百个特征通过T-SNE二维化,就能看出类似聚类的二维效果,这样就可以通过一个单词的 特征向量,看出它跟其他单词有没有相似之处了。这就叫嵌入,就是把一个单词嵌入到了一个几百维的空间中。
37,词嵌入还能实现 类比推理的功能,具体就是在 前面36的特征向量基础上,让不同单词的特征向量相减,在结果向量中有关联的特征所在维的值会很大,而无关联的特征所在维的值约等于0,这样只看结果向量,就可以实现这一组单词和那一组单词的类比推理。
实际应用中,会用词嵌入学习算法来学习每个单词的特征值,用余弦相似度测量两个词嵌入向量间的相似度,
38,那词嵌入学习算法怎么学习出每个单词的每个特征的值呢?将嵌入矩阵随机初始化,然后用梯度下降法学习出矩阵中的各个参数。
使用词嵌入 预测下一个词的过程如下图

总之,就是训练出词嵌入矩阵E,或者用别人训练好的,然后用单词的向量,乘矩阵E,得到这个单词的 词嵌入值,多个单词的词嵌入值组成新的多维一列向量,这个向量进入softmax函数,通过概率对比找到概率最大的单词。
此外,还有更简单高效的 词嵌入算法:
1,word2vec。
2,Skip gram模型把上下文映射到了目标词上,这是词嵌入算法一个不错的应用,但缺点是softmax函数计算很慢。
3,negative sampling 可以做到和skip gram类似的效果,但更采用了更高效的学习算法。
39, 情绪分类,做法如下

还是按 前面38的操作算出每个单词的词嵌入值,然后把这些值放入RNN,RNN最后一步计算一个特征表示,就能知道这句话是什么情绪了。
40,NLP讲完了,接下来讲 机器翻译和语音识别。
之前讲的语言模型( 前面31)是从零向量开始,之后每一个y都是下一个的输入x,而机器翻译不是从零向量开始,是先用encoder网络计算出一系列向量来表示这个输入的句子,然后decoder网络就能以这个句子开始,用跟语言模型类似的方式预测输出,这也叫 条件语言模型。所以语言模型输出的是任意单词的概率,而机器翻译输出的是最有可能的翻译的概率。如下图所示

41,单词的词典有那么多单词,在要输出翻译时,不可能计算每一个单词的 翻译概率,而且我们不想要随机翻译的词,只想要最好的, 集束搜索算法beam search 就是干这个的。
集束搜索按照集束宽度的设定,再根据概率先拿出(拿的过程还是 前面40里的编码解码过程)多个词作为翻译的第一个词的候选,然后给每个候选词算概率最大的下一个词,如果 集束宽度是10,那现在就有10个句子,目前每个句子两个单词,一次加一个单词不断进行,最终就会获得10个翻译的句子。
42,当 翻译出错时,如何判断是RNN的错,还是Beam search算法的错?
RNN实际上是个编码器和解码器,它会计算P(y|x),那就对比beam search的P(y|x)和去掉beam search的原始RNN计算的P(y|x),让他俩的概率分别和正确的概率比,他们谁的预测结果是错误翻译的选择概率大于正确翻译的选择概率,那就说明他错了。
43,翻译的句子常有多个正确结果,如何选择最好的呢?用 blue score
44, 注意力模型attention model ,他的做法是,基于 前面35的双向循环神经网络和LSTM,在翻译时每生成一个单词,就会计算在生成这个单词时,应该放多少注意力给每个输入块
45, 语音识别是在不同的时间和频率上看声波大小,然后使用注意力模型把频率和声波大小预测为字符,组成单词和句子。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1104000.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Django REST Framework完整教程-RESTful规范-序列化和反序列数据-数据视图

文章目录 1.简介及安装2.案例模型2.1.创建模型2.2.安装mysql必要组件2.3.管理后台转中文2.4.启动后台 3.数据序列化4.RESTful规范4.1.协议、域名和版本4.2.uri(统一资源标识符)4.3.查增删改4.4.过滤信息(Filtering)4.5.状态码(Status Codes&a…

Prometheus-Grafana

Grafana可对Prometheus实现可视化操作。prometheus-grafana提供了一个可运行的环境用于对测试网络进行实时监控。prometheus-grafana下有一个docker-compose.yaml文件用于控制prometheus和grafana的启动,和监控网络的指标。 配置需求: 推荐使用linux系统…

外汇天眼;VT Markets 赞助玛莎拉蒂MSG Racing电动方程式世界锦标赛

随着国际汽联电动方程式世界锦标赛第十赛季的到来,外汇经纪商 VT Markets 和玛莎拉蒂 MSG Racing 宣布了一项为期多年的全球合作。 外汇天眼温馨提醒:在做外汇交易之前,一定要审核清楚外汇平台的资质以及官网信息,以防上当受骗&am…

大模型Agent最新论文及源码合集,覆盖构建、应用、评估

人们对于通用人工智能(AGI)的追求可以追溯到1950 年代中期,当时的AI研究者对机器拥有人类思维能力抱有很高的期望,但是随着研究的深入,他们发现想实现这个目标比最初设想的困难许多。到如今,AGI仍然有很长的…

【计算机网络】网络原理

目录 1.网络的发展 2.协议 3.OSI七层网络模型 4.TCP/IP五层网络模型及作用 5.经典面试题 6.封装和分用 发送方(封装) 接收方(分用) 1.网络的发展 路由器:路由指的是最佳路径的选择。一般家用的是5个网口,1个WAN口4个LAN口(口:端口)。可…

JDK 21的新特性总结和分析

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

[正式学习java②]——数组的基本使用,java内存图与内存分配

一、数组的两种初始化方式 1.完整格式(静态初始化) 数据类型[] 数组名 new 数据类型[]{元素1,元素2…}; //范例 int[] arr new int[]{1,2,3,4}; 简化书写 一般我们会省略后面的 new 数据类型[] int[] arr {1,2,3,4}; 2.动态初始化 当不知道数组里面的初始值的时候&#xf…

AI绘画使用Stable Diffusion(SDXL)绘制玉雕风格的龙

一、引言 灵感来源于在逛 LibLib 时,看到的 Lib 原创者「熊叁gaikan」发布的「翠玉白菜 sdxl|玉雕风格」 的 Lora 模型。简直太好看了,一下子就被吸引了! 科普下「翠玉白菜」: 翠玉白菜是由翠玉所琢碾出白菜形状的清…

四川天蝶电子商务有限公司抖音电商服务引领行业标杆

随着电子商务的飞速发展,四川天蝶电子商务有限公司作为一家领先的抖音电商服务提供商,已经脱颖而出。本文将详细解析四川天蝶电子商务有限公司的抖音电商服务,让您一探究竟。 一、卓越的服务理念 四川天蝶电子商务有限公司始终坚持以客户为中…

微前端三:qiankun 协作开发和上线部署

我们先看qiankun怎么上线部署: 我这边用的是yaml 文件在 rancher上部署的: base是基座,这里每个应用都是一个服务,这个还是跟之前一样并没有区别,那如何在一个域名上挂载多个服务呢? 最开始我们主要是在in…

【调度算法】NSGA II

简介 NSGA-II(Nondominated Sorting Genetic Algorithm II)是一种经典的多目标优化算法,由Srinivas和Deb于2000年在NSGA的基础上提出,用于解决多目标优化问题。相较于NSGA,NSGA-II在运行速度和解集的收敛性上表现更好…

nginx的优先级和匹配方式

Nginx的location的优先级和匹配方式: 在http模块当中有server,在server模块才有location,location匹配的是uri /test /image 在一个server当中有多个location,如何来确定匹配那个location Nginx支持正则表达式: ^…

PLC 学习day01 了解PLC 的组成和知识。

1.资料来源 链接:3.三菱PLC编程视频关于PLC工作原理的介绍_哔哩哔哩_bilibili 2. PLC 的知识 2.1 PLC 的概述及特点功能 PLC是可编程逻辑控制器(Programmable Logic Controller)的英文缩写,是融合了继电器控制功能和计算机运算功…

补体C3/C4(C3/C4)介绍

补体是一种血清蛋白质,存在于人和脊椎动物血清及组织液中,不耐热,活化后具有酶活性、可介导免疫应答和炎症反应。可被抗原-抗体复合物或微生物所激活,导致病原微生物裂解或被吞噬。可通过三条既独立又交叉的途径被激活&#xff0c…

DNS(二)

实现 Internet DNS 架构 架构图 实验环境 关闭SELinux、Firewalld。时间保持一致 主机名IP角色client192.168.28.146DNS客户端,DNS地址为192.168.28.145localdns192.168.28.145本地DNS服务器(只缓存)forward192.168.28.144转发目标DNS服务…

TARJAN复习 求强连通分量、割点、桥

TARJAN复习 求强连通分量、割点、桥 文章目录 TARJAN复习 求强连通分量、割点、桥强连通分量缩点桥割点 感觉之前写的不好, 再水一篇博客 强连通分量 “有向图强连通分量:在有向图G中,如果两个顶点vi,vj间(vi>vj)有…

【vue】vue实现海康ws协议的实时监控播放:

文章目录 一、效果图:二、实现过程:【1】官网下载h5player.js:【2】引入h5player.min.js:【3】使用: 一、效果图: 二、实现过程: 【1】官网下载h5player.js: 【H5视频播放器开发包】…

Linux shell编程学习笔记13:文件测试运算

Linux Shell 脚本编程和其他编程语言一样,支持算数、关系、布尔、逻辑、字符串、文件测试等多种运算。前面几节我们依次研究了 Linux shell编程 中的 字符串运算、算术运算、关系运算、布尔运算 和 逻辑运算,今天我们来研究 Linux shell编程中的文件测…

PowerShell批量修改DNS域名解析

批量添加DNS A记录 $dnsServerName"" # DNS服务器的服务器名称,如果是在DNS服务器本机执行则可留空 $containerName"test.com" # 域名的后缀也就是DNS Zone Name $mydns[WMIClass]"ROOT\MicrosoftDNS:MicrosoftDNS_resourceRecord"…

yarn : 无法加载文件 C:\Program Files\nodejs\yarn.ps1

问题描述: 问题分析: 这个错误提示说明在电脑系统上禁止运行 PowerShell 脚本,因此导致无法加载 Yarn 的安装脚本。这是由于系统的执行策略(Execution Policies)设置所导致的。 解决方法: 1. 以管理员身…