深度学习与神经网络(吴恩达deeplearning)

1,013 阅读11分钟

卷积神经网络

卷积神经网络

1.边缘检测(垂直,水平)。

2.过滤器。6* 6* 3的图像和3* 3 * 3的15个过滤器(filter)做卷积运算,会得到4* 4* 15的结果。

3.垂直过滤器(Vertical)经过顺时针旋转90变水平过滤器(Horizontal)。一般垂直过滤器,左边是正值,中间是0,右边是负值;而同理,旋转后水平过滤器,一般上边是正值,中间是0,下边是负值。常见的过滤器一般是奇数*奇数的。除了1 0 -1的数字组合外还有Sobel filter和Scharr filter。

4.Padding,在过滤器工作时,角落或者边缘的像素点会输出较少,这是用0填充图像,其次在深层神经网络中经多次卷积运算,图像会变得很小,填充能减缓这种变小的情况。填充量P,填充过程有n *n的图像和f *f的过滤器得到n + 2p - f +1 的图像。

5.两种特殊的卷积。Valid卷积,填充量为0.Same卷积,n * n的图像经填充和卷积运算后得到的图像也是n * n,此时由第四点易推算出填充量P为P = (f-1)/2。

6.卷积步长S,加上卷积步长后得到的矩阵是[(n + 2p -f)/s+1] * [(n + 2p -f)/s+1]。

7.单层卷积网络图示

8。简单的卷积网络图示

9.一个神经网络,通常由卷积层,池化层,全连接层组成。cnn中经常用到池化层来缩减表示大小,提高计算速度。

10.常见的池化层:最大池化(Max pooling),平均池化(Average pooling)。常用参数f=2,s=2,效果相当于表示层高度宽度缩减一半。最大池化层即对邻域内特征点只最大,最大池化能减小卷积层参数误差造成估计均值的偏移造成的误差。平均池化即对邻域内特征点只求平均,平均池化能减小邻域大小受限造成的估计值方差增大造成的误差。

(最大池化)

(平均池化)

11.使用卷积能减少参数的个数,其原因是(1).卷积能做到参数共享,(2).卷积使用稀疏连接。

深层卷积神经网络

1.经典的网络有LeNet-5,AlexNet,VGG-16。在训练很深的网络时有时容易会产生梯度爆炸或者梯度消失的问题,通过引入跳远连接和残差块(Residual block)构成残差网络能解决这个问题。常见的残差网络Residual Network。

2.LeNet-5

输入层:32* 32* 1(代表黑白照片)。卷积层:过滤器为5* 5 为6个,步长s = 1,padding为0。池化层:参数(f = 2,s = 2),让整个高度宽度减小了一倍。卷积层:过滤器为5 * 5共16个,padding为0。池化层:参数(f = 2,s = 2),高度和宽度减小一倍。全连接层:FC1,120个神经元。FC2,84个神经元。

2.AlexNet

输入层:227 * 227 * 3 .卷积层11 * 11为96个,步长为4。池化层:参数为f=3,s=2。卷积层:卷积为same卷积,过滤器为3 * 3 有256个。池化层:f = 3,s = 2。卷积层:过滤器为3 * 3,384个,same卷积(操作3次,过滤器步数分别为384,384,256)。池化层:参数f=3,s=2。得到一个9216维向量。全连接层:FC1:4096个神经元。FC2:4096个神经元。

3.VGG-16

4.Residual Network

如果不运用残差网络,随着深度的加深,错误会先变大后变小。使用残差网络能有效解决这个问题。

5.1 * 1卷积,它给神经网络添加了非线性函数,在不改变高度和宽度的情况下,能改变信道数量,对构建Inception网络起了关键作用。

6.Inception网络

将conv和pooling,堆叠在一起,一方面增加了网络的width,另一方面增加了网络对尺度的适应性;

目标检测

1.目标定位:可输出中心点的坐标及目标的高度和宽度。代价函数也要进行重新定义。

2.特征点的检测,可以通过输出特征点的坐标,如眼角,手臂等等判断人类的运动状态等。

3.滑动窗口目标检测算法: (1).选定特定窗口,从左上角开始遍历整个图片,判断有没有目标。(2).换更大的窗口重复该操作。

4.卷积的滑动窗口实现:将神经网络的全连接层转化成卷积层高,提高效率。这一步骤主要通过使用不同规模和数量的过滤器来实现。

5.卷积滑动窗口的具体实现过程:

第二行中,第一个图的左上角窗口对应了最后一个图的蓝色小格。

6.Bounding Box 预测: YOLO算法:将图像预先分成若干个小格,然后看物体的中心落在哪一个格子。随后可用交并比或大非极大值抑制来评测。

7.交并比(IoU):两个小格的相交部分面积/两个小格的相并的面积。IoU可以用来评测定位是否精准。也可以在运用非极大值抑制时去掉和概率最大的小格重叠部分过多的小格。

8.非极大值抑制,首先可以把Pc值小于某个设定值的小格去掉,接着找到Pc最大的小格,去掉与其IoU较大的小格,接着再从剩下的小格中找Pc最大的小格,去掉IoU较大的小格,重复...

9.Anchor Boxes:设定大小形状不同的小格来检测不同类型的对象,如检测行人和汽车。输出的向量元素也会增加。

序列模型

循环序列模型

1.序列模型的应用及优点。

应用:语言辨识、机器翻译、DNA序列。RNN循环神经网络模型是序列模型的重要内容,主要优点是:输入和输出可以是不同长度,可以共享从文本不同位置学到的特征。

2.普通的循环神经网络模型及数学符号图解

第二个图中Waa和Wax堆叠合并成Wa,Wya简写Wy。

3.不同的循环神经网络

一对一,一对多,多对一,多对多(输出和输入个数相同),多对多(输出和输入个数不一定相同)

4.语言模型(1)(语言模型往往是测试者说什么,你就输出什么,它的评判标准与翻译模型和文字预测模型(如给出一个有空缺单词的句子,预测出空缺的单词)不一样,翻译模型往往可以得到不同种但同样好结果)

如机器录到一句话并将其转化成文字时,会有不同的版本。如The apple and pair salad. The apple and pear salad. 神经网络会计算出两个句子的概率,然后输出概率在大的句子。

(语言模型的图解和代价函数)

5.对新序列采样

当训练完一个模型后我们如果想要了解该模型学到了什么我们可以对其进行采样。如:我们可以根据第一个预测结果y1_hat根据其向量概率分布得到第一个字,然后将其等于x _<2>输入。以此类推,然后就可以得到一段完整的句子。如用新闻文本训练和莎士比亚文章训练后得到的模型,采样后会得到图二的文本。

6.循环神经网络中梯度爆炸用梯度修剪来处理,梯度消失则要用GRU或者LSTM来处理。

7.GRU

与普通RNN相比,GRU添加了门控单元,改变了RNN的隐藏层,使得其能更好捕获长距离依赖关系,并且有效解决了梯度消失问题。如The cat,whice already ate ....,was full.使用GRU能捕获长距离依赖,使得the cat 和 was 形成对应。

8.LSTM

GRU更简易,容易搭建更大的网络(只有两个门),LSTM更灵活更强大(三个门:更新门,遗忘门和输出门)值得一提的是在GRU中a_< t > = c_< t >, 而在LSTM中他们并不相等。

9.双向RNN

与单向(正向)RNN不同,双向RNN增加了反向连接,使得”未来信息“对”当下的输出“也产生了影响。

10.神经RNN,把多个RNN叠在一起,增加了神经网络的复杂性,由于时间维度的影响,常见叠加3个RNN,叠加太多会造成神经网络过于复杂。

自然语言处理和词嵌入

1.词嵌入 如果一个词汇表表有一万个单词,one-hot编码后会得到1万维的较大向量,且每个向量的内积都相同,任两个词的距离都是一样的,如king,queen,apple用one-hot编码后他们的相关性也是一样的,体现不了词类这一概念。

列举所有可能的特征,用这些特征的值来表示一个词。然后用t-SNE算法将该300维的向量映射到2维平面。

2.词嵌入的特性

使用上述词嵌入后,得到类似下面所示的一个图。两对有关联的词汇,如man woman和king queen。有e_man - e_women = (约等于)e_king - e_queen

由上面概念可引出一个相似函数(余弦相似度) 如给出man,women,king可根据这个求出queen

cwj.0807

3.嵌入矩阵

通过该矩阵E能将one-hot编码得到的(1,100000)的向量转化成(300,1)的向量。

4.Word2Vec和Glove以及负采样

这三个太复杂了,我这里引用了两篇CSDN里写得不错的文章https://blog.csdn.net/littlely_ll/article/details/78941403

www.cnblogs.com/cloud-ken/p…

6.情绪分类

情绪分类模型可用于点餐软件里对商家的评价之类的,通过对客户文字的输入,转化成对应的星数。 但这种通过普通的神经网络转化有一个很大的弊端,如"Completely lacking in good taste,good service ,and good ambience."这里由于有很多个good,在普通神经网络中由于没有时间维度的影响,会被误认为好评,但它却是一个差评。由此加入RNN,可解决这个问题。

序列模型和注意力机制

1.sequence to sequence模型

对机器翻译和语音识别起了关键作用 下图的基础模型把法语转化成英语的原理描绘了出来。左边为编码部分,将法语一个个输入,然后进行编码,右边为解码,解码成英语。

2.定向搜索

集束搜素可设置集束宽B。 第一次会找出B个最有可能的词汇

然后该B=3个词汇继续输入下一步,得到B*100000个概率,继续找3个概率最大的词汇作为第二个词,以此类推。

当B=1时就变成了贪心搜索。

3.定向搜索误差分析 如果人类的翻译和机器翻译出来差别很大,我们可以计算出两个句子的概率,如果人类翻译的句子概率要比翻译出来的要大,但是该模型却输出了概率小的句子,那么说明搜索算法出现了出现,如果反过来那么就是RNN出问题了.通过多次的对比,统计两部分出问题的概率,然后针对问题较大的模块进行改善即可。

4.Bleu得分

通过对翻译的句子进行得分计算,然后进行评估。

一元组评估细节 图中the标准翻译最多有两个,所以单词the的得分上限是2,又输出的句子有7个the,所以关于the的一元组评分是2/7。

二元组评分细节同一元组(n元组以此类推)

当机器翻译完全和某一个标准翻译一样时有,P1=p2=...pn=1 计算出来后求均值,由于对较短的翻译,如the cat 有p1 = p2 = 1 ,这样会得到较高的评分,但是这种并不是很好的翻译,所以我们要引入BP惩罚因子惩罚较短的翻译。

5.注意力

翻译较长句子时,我们的神经网络往往翻译会出现偏差,所以我们引入了注意力参数。通过双向RNN的正反两个激活值与注意力参数相乘组合成C。且所有注意力参数和为1。

end_190807.引用了吴恩达深度学习课程和 blog.csdn.net/littlely_ll… 以及https://www.cnblogs.com/cloud-ken/p/9556278.html