代码搜寻网站:
The latest in Machine Learning | Papers With Code
代码局部展示:
坎坷之路第一弹
血泪教训:
先刷土堆的视频,土堆,永远的神,然后再去看深度学习的书籍效果会更好,比如Pytorch,《动手学深度学习》等
——先入门,再琢磨
总况:
深度学习属于机器学习的分支,里面包含卷积神经网络(CNN),循环神经网络(RNN),全连接神经网络,实现这几种网络需要框架(也可以理解为库),拿卷积神经网络来看,里面存在卷积运算,卷积核(滤波器)的参数刚开始是随机的,但随着不断的反馈,loss的不断降低,卷积核的参数不断优化,这些参数就是识得的经验,也即通过这个参数来进行一个函数的拟合,从而实现建模。
Attention:搭建的网络是有输入和输出尺寸的要求的,因此会有一些前置步骤
迁移学习:
现在已经存在很多预训练好的流行的深度学习网络,我们可以针对自己的需求,对预训练好的网络进行微调或者特征提取,从而快速完成自己的任务。要注意,即使是不同的模型,也可以使用迁移学习,比如语义分割与分类模型的主干部分,就可以使用同一个预训练好的参数。
对于特征提取中经常用到的冻结训练可以如下理解:预训练模型参数冻结后,怎么更新,不需要更新,因为这就是已经比较好适应特征的参数了,现在你的模型处于初始阶段,不能让它影响到了好的参数,因此需要冻结
有两张图对于微调和特征提取的表示十分清楚明晰。
本质:
你的模型经过不断地调整以适应当前数据集,所以其最优表现大概率是在你的数据集上,这样来看,神经网络的泛化性能并不好,而举办那么那么多的比赛,其目的还是追求在已知的条件下,哪种模型对未知的东西预判性能更好。
所谓玄学:
神经网络经过不断地尝试调参之后,得到了一个不错的结果,给这个结果赋予一个好的故事,一切就都结束,但是这些都是发展过程中必不可少的阶段,正是因为有了实验上积累起来的量变,才会有将来的质变,你我皆是耕耘人。
损失函数(调参的目标之一):
如果损失函数具有评估意义的话,需要看数值和收敛性。如果没有评估意义的损失函数,只需要看其收敛性即可。仅仅有损失函数一个指标并不可信,在这个过程中,你还需要有其他的评估指标对模型性能进行评价,因此,在保证损失函数符合要求的情况下,让其他评估指标尽可能小。
调参(炼丹大法):
超参数调优第一弹:batch_size(模型的输入一般仅和你的图片大小,即长宽,以及图片深度有关,和网络模型的输入数量可以不一致,主要适合你的计算机性能就好,当然它也会影响你得模型效果)
超参数调优第二弹,然后调整学习率(可以使用自适应算法,使学习率随着批次不断调整)
超参数调优第三弹,调整优化器,优化器里面有一些参数可以调(其中就包括学习率)
调优终弹,调整模型,可以选择一些优秀论文中经常采取的模型架构,比如最近几年出的UNET
听说这个挺不错,但我还没来得及看:google-research/tuning_playbook: A playbook for systematically maximizing the performance of deep learning models. (github.com)