卷积神经网络
卷积神经网络
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。
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个神经元。
输入层: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个神经元。
如果不运用残差网络,随着深度的加深,错误会先变大后变小。使用残差网络能有效解决这个问题。
将conv和pooling,堆叠在一起,一方面增加了网络的width,另一方面增加了网络对尺度的适应性;
1.目标定位:可输出中心点的坐标及目标的高度和宽度。代价函数也要进行重新定义。
3.滑动窗口目标检测算法: (1).选定特定窗口,从左上角开始遍历整个图片,判断有没有目标。(2).换更大的窗口重复该操作。
4.卷积的滑动窗口实现:将神经网络的全连接层转化成卷积层高,提高效率。这一步骤主要通过使用不同规模和数量的过滤器来实现。
第二行中,第一个图的左上角窗口对应了最后一个图的蓝色小格。
6.Bounding Box 预测: YOLO算法:将图像预先分成若干个小格,然后看物体的中心落在哪一个格子。随后可用交并比或大非极大值抑制来评测。
8.非极大值抑制,首先可以把Pc值小于某个设定值的小格去掉,接着找到Pc最大的小格,去掉与其IoU较大的小格,接着再从剩下的小格中找Pc最大的小格,去掉IoU较大的小格,重复...
序列模型
循环序列模型
1.序列模型的应用及优点。
应用:语言辨识、机器翻译、DNA序列。RNN循环神经网络模型是序列模型的重要内容,主要优点是:输入和输出可以是不同长度,可以共享从文本不同位置学到的特征。
第二个图中Waa和Wax堆叠合并成Wa,Wya简写Wy。
一对一,一对多,多对一,多对多(输出和输入个数相同),多对多(输出和输入个数不一定相同)
如机器录到一句话并将其转化成文字时,会有不同的版本。如The apple and pair salad. The apple and pear salad. 神经网络会计算出两个句子的概率,然后输出概率在大的句子。
当训练完一个模型后我们如果想要了解该模型学到了什么我们可以对其进行采样。如:我们可以根据第一个预测结果y1_hat根据其向量概率分布得到第一个字,然后将其等于x _<2>输入。以此类推,然后就可以得到一段完整的句子。如用新闻文本训练和莎士比亚文章训练后得到的模型,采样后会得到图二的文本。
7.GRU
与普通RNN相比,GRU添加了门控单元,改变了RNN的隐藏层,使得其能更好捕获长距离依赖关系,并且有效解决了梯度消失问题。如The cat,whice already ate ....,was full.使用GRU能捕获长距离依赖,使得the cat 和 was 形成对应。
GRU更简易,容易搭建更大的网络(只有两个门),LSTM更灵活更强大(三个门:更新门,遗忘门和输出门)值得一提的是在GRU中a_< t > = c_< t >, 而在LSTM中他们并不相等。
与单向(正向)RNN不同,双向RNN增加了反向连接,使得”未来信息“对”当下的输出“也产生了影响。
自然语言处理和词嵌入
1.词嵌入 如果一个词汇表表有一万个单词,one-hot编码后会得到1万维的较大向量,且每个向量的内积都相同,任两个词的距离都是一样的,如king,queen,apple用one-hot编码后他们的相关性也是一样的,体现不了词类这一概念。
列举所有可能的特征,用这些特征的值来表示一个词。然后用t-SNE算法将该300维的向量映射到2维平面。
使用上述词嵌入后,得到类似下面所示的一个图。两对有关联的词汇,如man woman和king queen。有e_man - e_women = (约等于)e_king - e_queen
3.嵌入矩阵
通过该矩阵E能将one-hot编码得到的(1,100000)的向量转化成(300,1)的向量。
这三个太复杂了,我这里引用了两篇CSDN里写得不错的文章https://blog.csdn.net/littlely_ll/article/details/78941403
6.情绪分类
情绪分类模型可用于点餐软件里对商家的评价之类的,通过对客户文字的输入,转化成对应的星数。 但这种通过普通的神经网络转化有一个很大的弊端,如"Completely lacking in good taste,good service ,and good ambience."这里由于有很多个good,在普通神经网络中由于没有时间维度的影响,会被误认为好评,但它却是一个差评。由此加入RNN,可解决这个问题。
1.sequence to sequence模型
对机器翻译和语音识别起了关键作用 下图的基础模型把法语转化成英语的原理描绘了出来。左边为编码部分,将法语一个个输入,然后进行编码,右边为解码,解码成英语。
集束搜素可设置集束宽B。 第一次会找出B个最有可能的词汇
3.定向搜索误差分析 如果人类的翻译和机器翻译出来差别很大,我们可以计算出两个句子的概率,如果人类翻译的句子概率要比翻译出来的要大,但是该模型却输出了概率小的句子,那么说明搜索算法出现了出现,如果反过来那么就是RNN出问题了.通过多次的对比,统计两部分出问题的概率,然后针对问题较大的模块进行改善即可。
4.Bleu得分
通过对翻译的句子进行得分计算,然后进行评估。
一元组评估细节 图中the标准翻译最多有两个,所以单词the的得分上限是2,又输出的句子有7个the,所以关于the的一元组评分是2/7。
翻译较长句子时,我们的神经网络往往翻译会出现偏差,所以我们引入了注意力参数。通过双向RNN的正反两个激活值与注意力参数相乘组合成C。且所有注意力参数和为1。