cnn中《手写数字识别》《花鸟分类》《个人贷款预期预测》是怎么做到的。眼下深度学习热火,一起了解吧。
基底原理不展开,可百度了解。
在理解CNN过程,遇到三个困惑:
1、正向困惑:样本提取的特征值与目标特征值如何比较。样本A的特征值可以卷积提取出来,目标B的特征值怎么来?是如何比较的。
A特征值提取之后,会通过数学算法转化成分类的概率P(A),由于是有监督训练,目标B的分类概率P(B)已经确定。最终比较的是P(A)与P(B) 2个概率差距。
所以,在cnn分类模型中,2个概率函数差距如何表达及计算,成为核心关键,常用交叉熵。
注:理解特征概率P(A)与P(B)差距要结合迭代计算一起考虑。即通过n次迭代使得样本A的概率P(A)逼近目标B的概率P(B)。第一次运算出来的概率P(A0)是多少不重要,后面还要经过n次修订迭代运算。
2、反向困惑:反向传播,怎么更新参数
迭代计算的目的是调整参数。由于反向传播代码高度集成,数以百万、千万的参数要更新,不易理解。但确实如此,不管模型网络多少层, Loss.backward() 及loss_fn.step()短短2句就完成了众多参数的更新。可以打印执行前后权重及偏置参数对比印证。里面涉及的梯度下降法是优化算法。
3、模型输出困惑:
模型训练完之后,存储了【权重参数、偏置、模型结构】,重新加载模型文件,预测会使用模型及参数提取特征,计算概率,输出判定。