读研以来不断地说机器学习,但是机器学习究竟是什么还是不清楚,直到老师要自己讲机器学习算法,我又正好抽到卷积神经网络和循环神经网络,研究了很久,有了些个人的体会,如今写下这篇博文,希望可以对大家起到一个抛砖引玉的作用。本文的写成引用和参考了很多大佬的心得体会,作者只是站在他们的肩膀上进行了一次总结,在这里先向大佬们表达诚挚的谢意和敬意,引用的部分我会注明。话不多说,开讲啦!
首先最需要明确的一点就是,卷积神经网络,也就是convolutional neural networks (简称CNN),现在已经被用来应用于各个领域,物体分割啦,风格转换啦,自动上色啦blahblah,但是!!CNN真正能做的,只是起到一个特征提取器的作用!所以这些应用,都是建立在CNN对图像进行特征提取的基础上进行的。
这篇文章呢,我不打算和传统介绍CNN的文章一样先介绍生物神经元、突触什么的,就直接从最简单的实例讲起。不过如果你想真正的深入理解什么是CNN,我建议你先看看下面的这三篇,打个神经网络的基础。本文只是给大家说明什么是CNN。
零基础入门深度学习(1) - 感知器
零基础入门深度学习(2) - 线性单元和梯度下降
零基础入门深度学习(3) - 神经网络和反向传播算法
1、引言
这里可以扯出机器学习中听起来很高冷的名词 “ 欠拟合 ”
那么什么是“欠拟合”呢?举个通俗的例子:
你想让神经网络(简称神经)辨认猫和狗(算法类型为分类)。于是给它看一百万只狗,和一百万只猫,每只狗的脑门上都贴着“我是狗”的字条,猫则贴“我是猫”【使用标注数据】。神经同时看五十万只禽兽,分四批看,并作出判断【实现时用并行处理,使用mini-batch】。每个看到的猫或狗,如果判断错了,就修正自己的判断标准【优化】。每看完这二百万只禽兽算一轮,每学十轮就看一些之前完全没见过的猫猫狗狗做出判断【推广性测试】。然后呢,你发现给神经看的猫狗图片太少,神经不能很好地判断某些猫狗特征都有的动物(兔子,耳廓狐说的就是你)【欠拟合】,于是追加猫和狗的图片各一百万只。当神经刻苦学习猫狗知识的时候,你正在睡觉,一觉睡醒,发现神经一小时前判断猫和狗比较准【次最优解】,现在学太多反而判断不准了【过拟合】,于是你让神经使用一小时前的标准【防止过拟合技巧之early-stopping】。这样训练过程就结束了。
接下来扯回来,回到正题。
我们都知道,图片在计算机内部以像素值的方式被存储,也就是说两张X在计算机看来,其实是这样子的。