欢迎转载,转载请注明出处:
第三部分
这一部分仅仅介绍了一个model,就是在CV领域大名鼎鼎的CNN其它课程大多请的外宾过来讲课,讲得都是DL怎样在实际情况下的应用。
CNN
Basic CNN
CNN顾名思义倦积神经网络这个model叫倦积神经网络是由于它提取features的方式和倦积有些类似都是一格一格(或者几格几格)的左右移动。
CNN和Recursive NN是非常类似的
所不同的是CNN省略了Recursive NN的第一步也就是Parsing tree的那一步。
Induced Feature Graph,能够自己生成拓扑结构。
看似挺不错的。RNN是使用过的vector在同一layer里不会再使用第二次,CNN是用过的vector在同一layer里还能够用。从不计较。
CNN非常像卷积的,选一个window,然后从左向右的一步一步的移动,然后生成上一层的layer。
然后使用和RNN里一样的计算步骤。一步一步的recursive
这样的模型简单是简单。可是效果不好
CNN and pooling
带Pooling的CNN和Basic CNN在对于最以下两层的处理方面都是一样的,先生成金字塔的最以下两层:
然后生成了一个c的vector。接下来就pooling的过程,c_hat = max{C}
可是这样提取出来的仅仅有一个。提取出来的features太少。于是我们用不同宽度的window提取出feature map。然后再pooling,这样提取出来的features就多了。
有一个trick据说能够提高精度这样的方法是主动让models overfitting
在training阶段的最后一步,在z之前element-wise乘一个r。r是Bernoulli random variables。
这样能够有意的提高overfitting的可能性。继而能够训练尽可能多的features
在使用的时候当然不用再乘r了,可是weight会非常大。所以:
使其缩小。再计算最后结果
另一个trick是为了避免overfitting的:
另一个trick。因为我们的模型非常复杂,dataset也非常大,训练时间非常长,可是终于的训练结果可能不是最优的,所以就每隔一段时间,记录下来对应的weight和accuracy,在最后训练完毕的时候使用accuracy最高的weight。