机器学习说白了就是个划分边界的问题,如何把一类物品和其他类更好的分开就是目标。有了目标就需要一个判断标准,这个判断标准就是损失函数,等于给模型打分,损失函数值越低,分越高。所以目标就是找到一个完美的划分平面,使得分数最高。那么至于怎么找这个划分面呢?
1. 多个自变量的线性组合在高维空间里是一个超平面,理论上可以划分一切边界,这里也就是sum(w_i*x_i+b)的由来,其中b就是偏置项,这里如果没有b,函数就恒过原点了。经过不同w和x出来的y喂到下一层作为自变量x,不断往复,最后出来10个最终的z,把这些z经过softmax函数后出来一个0-1的概率,取概率最大的那一个作为模型的预测值。
2. 拿我们的预测值和真实的值比较,等于说对答案,看看我们能得多少分,这个评分标准就是刚才的损失函数。看到分数之后开始想办法让这个分高(也就是损失分更低),这时候就用到梯度下降,因为梯度方向是下降最快的,于是开始求偏导,这一部的目标是,通过预测的结果一步步往回求导,找梯度,也就是反向传播。我们的目标是通过反向传播更新最开始输入端的权重w。
3. 不断重复1,2,直到我们的预测结果和真实结果之间的损失分不能再降低了(人为给定个阈值),那么我们就训练完了。拿着这个结果去跑测试集,等于之前是在做练习题,现在去高考了,高考完就结束了,所以没有反向传播的学习过程了,最终考下来的结果也就是准确率,越高越好。
这个就是大概神经网络的原理,至于其中就会涉及到很多数学问题,比如怎么避免在梯度下降时找到的是极小值而不是最小值?如何提高效率和准确度?如何在高维特征中保持可解释性等等,这就要求有很强的数学功底和逻辑思维能力了。