zoukankan      html  css  js  c++  java
  • 我在机器学习踩过的坑,现在告诉你怎么跳过去

    我在机器学习踩过的坑,现在告诉你怎么跳过去

    https://mp.weixin.qq.com/s/ko3WtQqilQ-7-H9vRZHdlg

    大家好,我是为人造的智能操碎了心的智能禅师。

    最近很多读者问本禅师:

    转行机器学习需要注意哪些事情呢?

    我想学习机器学习,需要学习哪些知识呢?

    机器学习如何避免走弯路呢?

    本禅师表示非常理解大家的需求。

    人工智能(其实本禅师认为目前看来翻译成人造智能可能更直白一点)毫无疑问,已经是科技趋势,却又是门槛相对较高、对学习者要求非常高的一门科学。

    说起对机器学习所需要的基础知识掌握程度,一个有经验的开发者可能并不比刚开始接触机器学习的学生多。

    机器学习有哪些关键要素?需要掌握什么语言?如何理解机器是怎么学习的?… 接下来,我们听听人工智能头条特约作者李烨,讲讲她开始学习机器学习的经验。

    讲讲她踩过的那xiiieeeee坑们,以及如何从一个摸着石头过河的机器学习的新手,逐步成为老司机的。

    李烨,高级软件工程师,现就职于微软(Microsoft),曾在易安信(EMC)和太阳微系统(Sun Microsystems)任软件工程师。先后参与聊天机器人、大数据分析平台等项目的开发。

    学习“机器学习”这件事,我走过很长的一段弯路

    有一些心得、体会和方法,在此和大家分享。

                           

    以模型为驱动,了解“机器学习”的本质

    本课力图引导大家以模型为驱动,进行学习。

    我选择了几种经典模型(例如:线性回归,逻辑回归,决策树,支持向量机,条件随机场,K 均值等),作为入门的进阶。

    初次学习模型,不必贪多。但就这些选定的模型,一定要搞清楚其问题域、模型函数、目标函数、训练算法……潜入到数学公式推导的层面,对每一步的公式变换和对应物理意义有所理解,然后再去实践。

    这一个个的模型,就是机器学习的“肌肉”,我们要通过观察学习这一块块肌肉,以其为载体来了解机器学习的核心——将事物转化为数值,将关系、变换转化为运算——以事实(数据)为依据,以规章(算法)为准绳,通过计算来掌握事物的客观规律(模型)

     

     

    要知道,这些经典模型固然经典,但是到了实际应用中,它们并非神圣不可稍加改变。也不是说机器学习就仅限于这些经典模型。

    只有掌握了机器学习精髓的人,才可能灵活运用现有模型去解决实际问题,甚至进一步针对具体问题发明自己的模型和/或算法。

    反复学习,从记忆到掌握

    当然,达到这种程度并非一撮而就,总要从最简单的模型开始。

    根据我的经验,即使是本课列出的这几个最常用也相对简单的模型,要真正掌握,都需要反复学习。

    有可能第一遍看完有点似是而非,或者感觉自己明白了,但要自己从头推导又会半截断片儿。

    就像刚学完又忘掉生字,或是背诵到一半想不起后续99乘法表的小学生,这都是非常正常的现象。真正原因,就是还没有真正掌握。

    反复多学几遍,从头到尾掌握整件事情的逻辑,知道一个模型是怎么从最初设定目标,到一步步实现目标的——当真正掌握了这个过程之后,再回头看一个个具体的模型,每一步都是顺利成章的。

    掌握了事物内在的逻辑性,再去记忆,就容易多了。

     

     

    学习标准设置得不必太高,比如可以这样:

    第一遍学,只要求自己能完全掌握机器学习数据、模型、算法相互作用的基本关系,训练过程和评价标准。具体的模型,掌握最简单的线性回归就可以。

    只要 end2end 掌握了第一个模型,做到:能够从模型函数开始推导出目标函数,再用梯度下降算法求解,用(伪)代码实现梯度下降求解过程。

    第一遍学习掌握一个模型;第二遍学习就不难掌握2-3个模型;第三遍就有可能掌握本课列出的大部分模型………如此由易到难,螺旋式推进

    对于一些数学模型本身就比较复杂的,比如条件随机场、隐马尔科夫这类涉及场论和势函数的模型。

    如果直接入手,往往会被卡在模型函数本身上。但是当有了前面几个模型的基础,了解了更抽象层面的原理,掌握起来就容易多了。

    数学需要多精深?

     

     

    很多同学,想学机器学习。但是一上来就看模型,看到一大堆炫酷的公式,往往感觉很吓人。

    有些人也就因此萌生退意,要么放弃,要么只用现成工具把模型当作黑盒使用。

    其实,学习经典模型,并不需要多么精深的数学功底,理工科大学本科的数学课就基本够用了。

    基础数学概念

    在学习的最初阶段,只要:

    • 学过坐标系
    • 了解函数、向量和矩阵的概念
    • 能从直观角度对求导、求微与函数的关系有所理解
    • 并掌握最简单的矩阵运算

    就可以对本课中的经典机器学习模型有一定深度的感性认识了。

    本课中的公式都是减了再减的,务必要掌握。如果实在数学工具掌握太少,最次最次,也至少要读懂一组公式推导中的第一个和最后一个式子

    • 读懂它们都针对哪些变量进行了怎么样的运算
    • 这些变量和运算对应的物理意义是什么
    • 第一个式子是对哪种真实场景的数学描述
    • 最后推导的结果又具备怎样的特征

     

    初次学习者,可以暂且掌握到这个深度。

    两条路径反刍数学知识

    当然,仅仅这样的程度,套用现成模型还将就,却不可能达到灵活运用的程度。

    所以,还是建议同学们力求理解每一步推导过程。

    如果有可能,可以事先复习一下大学本科的高数(数学分析)、概率统计和线性代数课本。

    或者,在学习模型的过程中,一旦遇到了数学上的阻碍,就回头去查找相应知识。

    制定数学知识速查手册

    很多数学问题,之所以让人头大,其实并不是真的有多难,而是符号系统比较复杂,运算繁复,或者运算所表达的物理意义多样。

    很多时候造成困扰是因为想不起来这里用到什么定理,哪个公式,或者这样操作表达的含义是什么了。

    如果把常用的细小知识点都记录下来,按主题整理在一起,做成速查手册(小字典),需要用的时候迅速查找一下对应点,效果往往意想不到地好。能让我们学习“机器学习”的道路顺畅不少。

    日常学习 Tips

    关联

    把新学到的东西和日常的工作、生活联系起来,进行思考。比如:将理论代入现实,不同领域间事物的类比,相似内容的对比等。

    以身边的实例来检测理论。不仅能够加深理论知识的理解,而且有助于改进日常事物的处理方法。

    记录

    准备一个笔记本,纸的或者电子的。有什么发现、感想、疑问、经验等等,全都记下来。

    如果是对某个话题、题目有比较完整的想法,最好能够及时整理成文,至少记录下要点。

    隔一段时间后把笔记整理一下,把分散的点滴整理成块,一点点填充自己的“思维地图”。

    分享

    知识技能这种东西,学了,就得“得瑟”——把学习到的新知识、理论、方法,分享给更多的人。如此一来,倒逼自己整理体系、记忆要点,堪称与人方便自己方便的最佳实例。

    把自己的感想、体会、经验分享出来也是同理,还多出了锻炼自己逻辑思维能力和归纳总结能力。一举多得,何乐而不为?

    江湖有句话:宁舍一锭金,不舍一句春。意思就是,宁愿我舍去一锭金子不要,也不愿把我学习的门道泄露给别人。可见,学习的方法的价值,才是最为宝贵的。

  • 相关阅读:
    Mono 4.0 Mac上运行asp.net mvc 5.2.3
    ASP.NET SignalR 高可用设计
    .NET Fringe 定义未来
    微软“.Net社区虚拟大会”dotnetConf2015 第二天 无处不在的Xamarin
    微软“.Net社区虚拟大会”dotnetConf2015:关键词:.NET 创新、开源、跨平台
    Mono产品生命周期
    Paket 介绍
    谷歌发布的首款基于HTTP/2和protobuf的RPC框架:GRPC
    Visual Studio 2015 CTP6 发布
    皮裤原理和运营微信公众号dotNET跨平台
  • 原文地址:https://www.cnblogs.com/DicksonJYL/p/9569232.html
Copyright © 2011-2022 走看看