【原】深度学习的一些经验总结和建议 | 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,也就是人工智能,就像长生不老和星际漫 ...
随机推荐
- jquery模拟按下回车实现代码
简单地记下jquery实现回车事件,代码如下: 全局: 代码如下: $(function(){ document.onkeydown = function(e){ var ev = document. ...
- 运维不仅仅是Linux,居然还要知道这么多?
摘要: 运维不仅仅是懂Linux就行,因为还有一大部分的Windows运维,向windows运维人员致敬.当然我们这篇文章不是说运维除了懂Linux,还要懂Windows,而是涉及运维的其他方方面面. ...
- 对Qt for Android的评价(很全面,基本已经没有问题了),可以重用QT积累20年的RTL是好事,QML效率是HTML5的5倍
现在Qt不要光看跨平台了,Qt也有能力和原生应用进行较量的.可以直接去Qt官网查看他和那些厂商合作.关于和Java的比较,框架和Java进行比较似乎不且实际.如果是C++和Java比较,网上有很多文章 ...
- 生成sql server 数据库 脚本的 存储过程和调用
USE [db_datadown] GO /****** Object: StoredProcedure [dbo].[GetTBScript] Script Date: 03/05/2015 09: ...
- vue.js与后台模板引擎“双花括号”冲突时的解决办法
后台渲染模板如swig,也使用“{{ }}“作为渲染,与前端vue的产生冲突,此时只要在新建Vue对象时,添加delimiters: ['${', '}'],就搞定了,代码如下 <!DOCTYP ...
- VMware克隆CentOS7,解决网络配置问题
问题: 安装CentOS7 mini版,静态IP配置完毕后,关闭虚机CentOS7-1,克隆虚拟机为CentOS-2.克隆出来的虚拟机使用ifconfig命令,无法发现网卡,只有一个lo设备.虚机无法 ...
- 【dockerFile配置jvm 启动参数】dockerFile 参数解释
最近比较忙,实际也没有用得上.仅仅记录几个链接: Dockerfile reference:https://docs.docker.com/engine/reference/builder/#usag ...
- 【mysql5.7】远程无法连接设置
版本5.7 系统:ubuntu16.04 配置文件位置(apt安装): 1.链接设置 注释掉在/etc/mysql/mysql.conf.d/mysqld.cnf里面的bind-address = 1 ...
- java 中的一些运算符问题
逻辑运算符 && 与 &: 在这二个与运算符中,一般用于if的判断中,A&&B,假设A的条件不满足时 则不会去判断后面的B, 如果A满足条件时就会接下来去做B条 ...
- Spring中的配置文件文件位置
在Java开发中,一般在Spring框架中,classpath的位置是指src下,在IDEA中一般是指resource中 配置文件 位置:任意,开发中一般在classpath下(src) 名称:任意, ...