【原】深度学习的一些经验总结和建议 | To do v.s Not To Do
前言:本文同步发布于公众号:Charlotte数据挖掘,欢迎关注,获得最新干货~
昨天看到几篇不同的文章写关于机器学习的to do & not to do,有些观点赞同,有些不赞同,是现在算法岗位这么热门,已经不像几年前一样,可能跑过一些项目、懂点原理就可以了,现在对大家的要求更高,尤其工程能力更不可缺少,只跑过一些iris鸢尾花分类、啤酒与尿布、猫狗分类等的同学需要再提高提高,因为竞争太激烈了,我在这里结合我自己的经验总结一下吧~
To Do
做项目时,边搜集数据可以边用已经搜集好的少部分数据跑模型。不用等到所有数据都搜集好了再跑。
不知道什么算法合适,可以直接把所有的算法都跑一遍,看效果再选择,多跑几个应用场景你就知道什么算法适合什么场景,什么数据对不同的算法会有什么影响了。
不知道什么参数是最佳参数,可以用random search或者grid search自动搜索最佳参数组合,有经验以后对于每个参数的大概范围心里会有个数。
一定要练习工程能力,只会调参的demo侠现在很难找到工作啦。
模型复现和刷题是很好的锻炼工程能力的一种方式。
刷题不要追求数量,要总结不同类型的题目的经验,并结合之前的业务中,看能不能优化之前的业务逻辑。
模型复现可以给自己规定一个任务,譬如在一个月内,把某篇论文的Tensorflow实现的代码,复现成Pytorch或者PaddlePaddle等其他框架的代码,不是闲着没事做,而是模型复现可以迅速提高你对框架的熟悉度和代码能力。
模型复现的过程中,最难的是写新的op和模型效果(精度和速度)的对齐。这可能很折磨人,但是收获也很大。
如果要做新项目,可以先看看有没有预训练模型,可以快速做迁移学习的,如果有,那么整体的模型周期会快很多。
如果跑完算法,一定要有一个成品的形态,最好不要只做算法这一块,譬如跑完模型将其打包封装成服务接口(服务端和移动端等),达到让人可用的状态最好。
领导不想知道过程,只想知道结果。没有可用的东西和可视化的结果,他会觉得你啥也没做。
上条只针对部分领导。
没有人会比你更关心模型的参数调整导致模型的效果提升了0.1%还是1%,大多数人,尤其是leader、或者leader的leader,只关心它有什么用,真实场景的效果好不好。
可以多和同事、同行等互相交流,参加线下的学习会、交流会等,可能会有意想不到的收获。
学习新的算法,先把代码跑起来再说,再来看理论、数学推导、自己手写实现等。
除了调参以外,还需要关注关注部署上线、模型压缩等方面的内容。
Not To Do
训练数据不要太干净了,因为真实场景的数据往往和实验数据差很多,尝试加点噪音吧,做些数据增强和mixup等。
论文里的效果不一定能复现。可以尝试论文的思路,但是不要太过相信论文里的效果数据。
做一个项目就好好深挖,不仅仅要做出来,还要不断的优化,不然每个项目都只是跑通了,效果还行,没必要写到简历里,不如写一个做的很深入,尝试了各种优化方法并有效果提升的项目。
不要因为觉得自己数学不好就先去恶补数学,买一堆高等代数、数学分析、实变函数、复变函数等纯数学书,如果一定要看,推荐《线性代数》《信息论》《凸优化》《数值分析》。
上条推荐的四本数学书也不用全看,凸优化太厚了,其他三本可以在自己有大块时间可以刷书的时候,规定自己在一个月或者几个月的时间迅速刷完。线性代数是基础,数值分析是优化方法(也不用全看),凸优化与信息论与目标函数相关,涉及机器学习的很多理论知识。
不要觉得你训练的模型效果多好就多么厉害,除非是做科研、打比赛、工业界更关注能不能落地,能不能应用产生价值,不要自high = =
如果把你的算法封装成服务了,也要做做压测,学习下工程方面的内容。
最好的状态是,工程能力强,又懂算法,两者结合,效果更佳。不要只注重某一方面的提升,多关注下自己的代码风格,不要让你的同事code review的时候犯难 - -
暂时想到这些,每条都是试错后的血泪教训的总结T_T,有补充的欢迎大家在下面留言~
【原】深度学习的一些经验总结和建议 | To do v.s Not To Do的更多相关文章
- ML平台_微博深度学习平台架构和实践
( 转载至: http://www.36dsj.com/archives/98977) 随着人工神经网络算法的成熟.GPU计算能力的提升,深度学习在众多领域都取得了重大突破.本文介绍了微博引入深度学 ...
- 深度学习、物联网专家Sunil Kumar Vuppala博士独家专访
介绍 有多种方法可以学习数据科学,机器学习和深度学习概念.您可以观看视频,阅读文章,参加课程,参加会议等.但是有一件事是无法替代的----经验. 我个人从与数据科学专家和行业领袖的交流中学到了很多.他 ...
- Tensorflow2 深度学习十必知
博主根据自身多年的深度学习算法研发经验,整理分享以下十条必知. 含参考资料链接,部分附上相关代码实现. 独乐乐不如众乐乐,希望对各位看客有所帮助. 待回头有时间再展开细节说一说深度学习里的那些道道. ...
- 深度学习中环境配置的一些经验总结(conda 常用命令)
前两个月参加了学校的国创项目,和一个外院的同学组队.课题是基于深度学习的新闻图片中网络暴力元素的检查. 6月末最后一门试考完,正式开始暑假,便有了大把时间搞这个国创项目(反正没有其他事干).两个组凑钱 ...
- YOLO_Online 将深度学习最火的目标检测做成在线服务实战经验分享
YOLO_Online 将深度学习最火的目标检测做成在线服务 第一次接触 YOLO 这个目标检测项目的时候,我就在想,怎么样能够封装一下让普通人也能够体验深度学习最火的目标检测项目,不需要关注技术细节 ...
- 【深度学习Deep Learning】资料大全
最近在学深度学习相关的东西,在网上搜集到了一些不错的资料,现在汇总一下: Free Online Books by Yoshua Bengio, Ian Goodfellow and Aaron C ...
- Deep Learning(深度学习)学习笔记整理
申明:本文非笔者原创,原文转载自:http://www.sigvc.org/bbs/thread-2187-1-3.html 4.2.初级(浅层)特征表示 既然像素级的特征表示方法没有作用,那怎样的表 ...
- paper 53 :深度学习(转载)
转载来源:http://blog.csdn.net/fengbingchun/article/details/50087005 这篇文章主要是为了对深度学习(DeepLearning)有个初步了解,算 ...
- 【转载】Deep Learning(深度学习)学习笔记整理
http://blog.csdn.net/zouxy09/article/details/8775360 一.概述 Artificial Intelligence,也就是人工智能,就像长生不老和星际漫 ...
随机推荐
- 为什么360、百度、腾讯出的Mac端云盘客户端都只有同步盘?(用户量小,同步盘开发成本低,Linux下都没有客户端)
如题,顾名思义,同步盘是用来同步的,不具备增量的功能,像这三家在Windows端出的客户端都是即有同步也有增量的. 陆续出来的,可能大家更多的是跟随策略,不得不提dropbox是这样的形式.mac电脑 ...
- Zookeeper zkui-zookeeper图形化管理工具
zkui zkui是一个Zookeeper可视化管理工具. Github:https://github.com/DeemOpen/zkui zkui安装 1.Git拉取代码 #git clone ht ...
- 百度网盘背后的存储系统atlas
原文 http://www.bitstech.net/2015/07/25/baidu-atlas/ 百度网盘免费提供2TB存储, 它的存储量一定是惊人的, 支持它的存储系统atlas也是相当不 ...
- Linux命令行和shell编程
Shell Shell是一个程序,用户输入的命令通过shell来传达给内核或其它程序.用户在linux打开一个终端,终端就会自动调用用户的shell. Linux上的Shell有很多种,用的最多是sh ...
- 似乎是VS2017的一个BUG
VS版本:2017(15.9.13) 新建一个c#控制台项目,把Program.cs的内容替换成如下: namespace ConsoleApp1 { class Program { static v ...
- spring boot 2.x 系列 —— spring boot 整合 druid+mybatis
源码Gitub地址:https://github.com/heibaiying/spring-samples-for-all 一.说明 1.1 项目结构 项目查询用的表对应的建表语句放置在resour ...
- 【设计模式】行为型11解释器模式(Interpreter Pattern)
解释器模式(Interpreter Pattern) 解释器模式应用场景比较小,也没有固定的DEMO,中心思想就是自定义解释器用来解释固定的对象. 定义:给定一个语言,定义它的文法表示,并定义一个 ...
- [MFC.Windows程序设计(第2版) 第一章
1,windows编程模型如下图: 2, windows的消息有成百上千种,以下列举10个: 3,消息处理函数的四个参数:窗口句柄(表示消息属于哪个窗口,32值.该窗口句柄引用一个数据结构,数据结构存 ...
- golang切片和数组的区别
好久的没有写博客了,这段时间没事研究了下go这门语言. 我们先介绍下go中的数组和切片的区别和用法 说了这么多 我们先来看段代码吧 var arr1 [3]int var arr2 [3]int = ...
- 在django中使用vue.js需要注意的地方
有接口如下: http://127.0.0.1:8000/info/schemes/ 返回json数据: [ { "name": "(山上双人标准间)黄山经典二日游(魅力 ...