admin 管理员组

文章数量: 888297

深度学习人生

深度学习人生

今年是而立之年,当立之年似乎还没有立起来。去年三月份从底层协议栈转岗到了算法研发,开始慢慢接触深度学习,有了一些自己的思考,感觉人生也是深度学习。

要有正确的损失函数

深度学习最重要的是损失函数,损失函数决定了深度学习的优化方向,对应于人生,损失函数就是人生的目标

我最近在做人脸识别的项目,人脸模型损失函数用的是18年的ArcFace Loss,是角损失函数的一种变形。ArcFace Loss的目标是使得同ID人脸的特征向量尽可能的Cosine值大,也就是向量间的夹角尽可能小,而不同ID人脸的特征向量Cosine值尽可能小。一般做多分类问题,特征向量后面都是直接接FC层,然后接Softmax CE,尽管这是一种比较通用的方法,但是人脸识别有其特殊性,它的类别远远大于一般的多分类问题,而且人和人之间的差异远没有普通的多分类问题大,所以需要精心选择损失函数来使得模型能够抽取出区分度高的人脸特征向量。
如果损失函数选择不好,优化器再好用,模型再牛逼,数据再干净,最后的效果也会差强人意,没有正确的损失函数,就没有一个正确的学习目标。

这和人生也是一样的,人做事也要有自己正确的目标,如果没有目标也就没有方向,没有方向,连努力的方向都没有,谈何去把事情给做好呢。深度学习要有正确的损失函数,人生也一定要有正确的目标。

凡事不能一蹴而就

深度学习训练过程都是比较漫长的,损失函数的Loss值会反复震荡,甚至会起起落落,很少能够在一个Epoch就收敛的。凡事不能一蹴而就,只要是向着目标前进就行,看的长远一点,即使短期看不到收获,也请坚持,只要有正确的目标,宝藏也许就在前面的1cm。

学习率不能太大

学习率是深度学习重要的参数,要设置合适的学习率。学习率太小了,模型优化的速度太慢,而学习率太大了,又会导致模型不收敛。人做事也要有合适的学习率,不能不总结,不总结的话,容易在一个石头上磕到两次,而又不能事无巨细完美主义的总结,总结过于繁琐的话抓不到重点,就有可能什么收获都没有。

学习方法也要总结

SGD是最常用最简单的优化器,主要是配置学习率参数,需要人工的设置在不同阶段的学习率。而Adam则是现在最流行且效果比较好的优化器,它除了学习率外,还有别的参数,能够在训练的过程中动态的调整学习率,加速深度学习的训练过程。Adam和SGD最大的不同,就是会对之前的学习效果进行"总结"。人在学习的时候也要注意对学习方法的总结,很有可能会起到事半功倍的效果。

每一个Batch就是一天,每一年都是一个Epoch

深度学习每次训练的那一批数据称为一个Batch,所有的训练数据是一个Epoch,通常训练模型需要循环十几个Epoch才会收敛。人的每一天不就是一个Batch吗?那365个Batch不就是一个Epoch吗?

训练数据的信息熵决定模型效果

现阶段的深度学习更像是数据工程,尤其是工业级的应用,对模型表现起到决定性作用的就是训练数据,如果训练数据中包含的信息足够丰富,能够充分的包含目标任务的信息,训练满足需求的模型就是水到渠成的事情。

我们在生活学习的时候,输入的"训练数据"也很重要,一定要注意自己的输入,注意自己的时间分配,现在消磨时间的东西太多了,可能一天都没有什么有价值的输入,那这一天就过去了,可能很快一个Epoch也就过去了,一眨眼人生80个Epoch也就没了。弹指一挥间,暮暮已晚年。

本文标签: 深度学习人生