从一句代码都不会写,慢慢接触数据分析花了半年,然后学习机器学习、深度学习、自然语言处理又花了半年多,虽然标题写的是深度学习的学习心得,但其实更多是这一年多的时间里,关于编程、模型等等的学习的回顾和反思。

首先我本科学的是数学,不过说实话学得也不好,很多知识理论考完试就忘了,印象最深的只有实变函数,因为难得逆天,所以实际上,我的背景就是数学学得不好,编程也没怎么接触过(除了用过matlab做数学建模),这样的我却因为一些巧合去了一家企业实习做数据分析,开始正式学习编程。

当时的老板对我也是非常好的,他给我定下了一个半年计划(因为我就实习半年),首先从数据库开始学习数据的预处理,然后学习Java,通过Java连接数据库做一些复杂逻辑的数据处理,同时结合python做分析,这是主线。另一方面,因为当时公司想要做一个交通大数据平台,所以还涉及到前端方面的知识、数据接口之类的东西,这些也要学,不过这些就是其他同事的工作,我就是偷一下师。

这个计划现在看来是非常合理的,主要在于学习的顺序,我认为一个合理的学习顺序对于最终的效果有很大的影响,可以看到,首先学习mysql,语句十分简单,很适合作为一个变成零基础的人入门,然后是学习Java而不是python,我个人觉得python虽然写起来简单,但不够"规范",比如说用python输出一个语句只用一个print就足够了,Java却要写一大堆东西,但那些东西没有意义吗,恰恰相反,它们其实反映了面向对象编程的思想,只是python隐藏了这些东西。所以我觉得如果想要系统学习编程,python并不是一个好的选择(当然,做深度学习的话或许学习C++和python更好,不过那就是后话了)

另一方面,我觉得学习如果想要效率高,最主要的就是要有目的,少点纠结细节,少看书,多实践。这是老板给我的建议,比如说数据库,如果买一本书来看,几百页,看完都一个月过去了,而且对一个编程零基础的人来说,看完估计也是什么都不懂,所以最实际的方法就是在网上搜教程,最简单的sql教程,大概看一下,然后就直接上手,当时我以处理数据为目的,根据需求想办法写出sql语句,想不出来就谷歌,这样几天下来,很容易就熟悉了。

后来我也继续跟着老板做一些大规模数据挖掘和机器学习的内容,然后就进了机器学习的坑,关于机器学习,我个人觉得还是那两点心得,制定一个合理的学习顺序,以及少看书,多看博客。什么是合理的学习顺序,就是比如你不能跳过机器学习直接学深度学习的模型,只有深入理解了线性回归、逻辑回归,才能更好地理解神经网络,像这样一步一步踏实地学习,总是没错的。除此之外,我觉得学习一个模型,很重要的一点就是要自己推导一遍公式,用代码实现一次模型,然后写一篇文章记录下来,只有你能够向别人解释清楚这个模型是什么,这才算真正掌握了一个模型,所以虽然这个过程会耗费很多时间,但我也一直在坚持,一直写博客。

后来,我决定做自然语言处理,又找到了一些新的心得。首先,当你学习的内容慢慢变得前沿,你会发现书肯定是没用的了,因为特别是深度学习这个领域,每年都会出现一个甚至几个有很大突破的模型,即使你买了一本上年出的书,你也会发现它很多内容都是过时的,而且书本讲的都是差不多的内容,最重要的是根本就不够深入!然后就看博客吧,可是还是那个问题,当你学习的内容变得前沿,学的人就会慢慢变少,其中写博客的人就更少了,所以你会发现,比如你想搜一些ESIM模型的文章,好像全网都是同一篇文章相互引用。

这时候就需要看论文了,其实我们可以把论文看成更加严谨的博文,你看博客可能会有小错误,但是论文基本上是不存在的,而且其实论文也写得很详细的,每个细节都会讲解清楚,可能就是有时候不够博客通俗易懂而已,对英语的要求也更高一点。

除此之外,论文也能让你了解到目前学术界的发展进程,比如说,你想学习CNN,然后上网搜文章,感觉学了好多,但其实说的都是上个世纪提出的LeNet,后面已经提出了GoogLeNet、ResNet、DenseNet等等一大堆模型了,可是你不看论文你是不会知道的,或者说你会经常看到这些词,但你并不知道这些原来是CNN的改进版本,也不清楚它的发展历史。

最后,看论文还有一个好处,就是拓展思路,每篇论文其实都包含了这个研究方向的一个综述,也会写到研究团队的改进思路,这些都是很宝贵的东西,在阅读过程中,你就会慢慢发现原来之前觉得很厉害的LSTM其实还是会有短期记忆的问题,原来Transformer就是为了改进LSTM这个缺点用multi-head attention替换所有RNN、LSTM而提出的,诸如此类的,明白不同模型的优缺点,不同模型是如何改进的,这些都对研究有很大的帮助。

所以总的来说,如果现在给我一个新的知识点,我会怎么学习呢,首先就是看博客,看有没有写得比较好的博文,然后就是看相关的论文,再把自己的理解记录下来,写成文章,这样也能帮助到其他需要学习的人,最后,再用代码实现。

关于代码实现模型这一块,我也说一下自己的一些习惯,首先,虽然自己从头开始写一个模型可以深刻地理解它,但耗费的时间实在太多了,所以我往往会在github上下载代码,一般这样下载下来的代码是比较完整的,有很多功能的,然后我就会删减代码,简化代码的好处就在于能让你初步了解实现这个模型的核心模块,同时能理顺整个模型实现的思路,避免其他功能的干扰,比如说你想学习一个简单的全连接神经网络结构,下载了代码发现作者在神经网络的基础上又加入了dropout、残差连接等等,这些结构能让模型效果更好但却不是最核心的模块,所以你就可以删掉它们了,在分析哪些可以删除哪些不可以的时候,你自然就明白了整个模型的思路了。

之后,我会在代码上写注释,分析出每一步的作用,每一步是如何实现的。最后,如果想要更深刻的理解模型,我就会选择把这个模型应用到其他问题上,比如我现在有一个用于图像分类的CNN,那么我就会想办法把它改成用于文本分类的CNN,改动不大,但是实际改完你就会发现对模型的理解又更深了。

以上就是我这一年多时间学习编程、深度学习的一些小小经验,如果能够带给正在烦恼如何入门的你们一些小小的帮助就好。

最近本人在github写了一个自然语言处理的入门教程,包括模型的代码和模型的分析介绍,欢迎交流:NLPBeginner

想浏览更多关于数学、机器学习、深度学习的内容,可浏览本人博客

深度学习半年学习心得(如何入门)相关推荐

  1. 深度学习-学习路线-个人心得体会

    深度学习的学习路线和体会心得 时间轴 个人的学习路线和时间轴,包含基础知识.部分实践,不包含具体的科研项目 一点心得 我是非计算机出身的,研究生研究方向深度学习,可以说是零基础. 零基础一定一定要打好 ...

  2. 126篇殿堂级深度学习论文分类整理 从入门到应用 | 干货

    如果你有非常大的决心从事深度学习,又不想在这一行打酱油,那么研读大牛论文将是不可避免的一步.而作为新人,你的第一个问题或许是:"论文那么多,从哪一篇读起?" 本文将试图解决这个问题 ...

  3. 126篇殿堂级深度学习论文分类整理 从入门到应用(上)

    如果你有非常大的决心从事深度学习,又不想在这一行打酱油,那么研读大牛论文将是不可避免的一步.而作为新人,你的第一个问题或许是:"论文那么多,从哪一篇读起?" 本文将试图解决这个问题 ...

  4. java学不下去能学web安全吗,这半年学习 Web 安全的一点心得体会

    原标题:这半年学习 Web 安全的一点心得体会 来自公众号: 信安之路 大家好,我是 Mirror(王宇阳),专科在读的大二学生:接触信安时间不长,大佬多多指教.信安之路成长平台网站开放后我就在双十一 ...

  5. (zhuan) 126 篇殿堂级深度学习论文分类整理 从入门到应用

    126 篇殿堂级深度学习论文分类整理 从入门到应用 | 干货 雷锋网  作者: 三川 2017-03-02 18:40:00 查看源网址 阅读数:66 如果你有非常大的决心从事深度学习,又不想在这一行 ...

  6. 126篇殿堂级深度学习论文分类整理 从入门到应用

    如果你有非常大的决心从事深度学习,又不想在这一行打酱油,那么研读大牛论文将是不可避免的一步.而作为新人,你的第一个问题或许是:"论文那么多,从哪一篇读起?" 本文将试图解决这个问题 ...

  7. 126 篇殿堂级深度学习论文分类整理 从入门到应用 | 干货

    如果你有非常大的决心从事深度学习,又不想在这一行打酱油,那么研读大牛论文将是不可避免的一步.而作为新人,你的第一个问题或许是:" 论文那么多,从哪一篇读起?" 本文将试图解决这个问 ...

  8. 126篇殿堂级深度学习论文分类整理从入门到应用

    2017-12-27 雷课 如果你有非常大的决心从事深度学习,又不想在这一行打酱油,那么研读大牛论文将是不可避免的一步.而作为新人,你的第一个问题或许是:"论文那么多,从哪一篇读起?&quo ...

  9. ECG分析:基于深度学习的ECG心律失常分类入门(3)

    ECG分析:基于深度学习的ECG心律失常分类入门(3) 数据库的Python读取 本次读取数据,用的是一款专门读取MITAB数据的工具--WFDB-python,WFDB包下载 ,全称是 Python ...

  10. ECG分析:基于深度学习的ECG心律失常分类入门(1)

    ECG分析:基于深度学习的ECG心律失常分类入门(1) 写作动机 由于受突发疫情的影响,开学时间推迟了(在此特向奋斗在前线的各行各业的工作者们致以崇高的敬意!).前天晚上刚好看到一篇新出的论文,跟自己 ...

最新文章

  1. 用弹性振子力学系统方法计算一组反对角矩阵的质量和频率n+m=8
  2. AI:人工智能概念之机器学习中常用算法的思维导图集合(非常经典、建议收藏)之详细攻略
  3. Android保存自定义路径的图片的一些问题
  4. android studio标题怎么改,如何在Android Studio中将应用标题更改为徽标
  5. Ansible基础概述
  6. Vim的NerdTree插件
  7. 每日一笑 | 爱的魔力转圈圈~
  8. mysql 导入导出 csv_mysql文件导入导出为csv格式
  9. 英特尔 超核芯显卡 620mac_2020双11装机。科学计算工作站配置推荐。i9-10980XE加3080显卡加64G ECC内存...
  10. BZOJ【1609】 麻烦的聚餐
  11. jquery ajax 方法及各参数详解
  12. 随机过程(1)——绪论
  13. java毕业生设计在线购书商城系统计算机源码+系统+mysql+调试部署+lw
  14. 神经网络编程的34个案例,神经网络编程是什么
  15. 360无线wifi路由器连接到服务器,luyou.360.cn如何登录360路由器
  16. LED升压大电流恒流芯片H6911峰值电流检测 调光辉度65536驱动IC方案
  17. C语言合法标识符(含知识点)
  18. Tracert 抓包测试
  19. NOMAO软件测试工资,基于混合遗传算法的测试数据自动生成研究
  20. 我的世界整合包 云服务器搭建方法(ECS)

热门文章

  1. QT串口助手(五):文件操作
  2. 全奖热招 | TUM、HKU、McGill、UTS等8所高校全奖博士招生信息汇总
  3. 怎么搜索代码里的所有中文汉字
  4. 常用组合数计算公式及推算
  5. 年度回顾:短视频大逃杀
  6. “狗屁不通”文章生成器网页版代码
  7. html箭头轮播,CSS-用伪类制作小箭头(轮播图的左右切换btn)
  8. (转)MySQL数据库InnoDB存储引擎的磁盘空间利用率分析
  9. win10专业版无法安装更新解决方法
  10. 【机器学习/MachineLearning】相关基本概念2——归纳,演绎,溯因法