前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >你实践中学到的最重要的机器学习经验是什么?

你实践中学到的最重要的机器学习经验是什么?

作者头像
AI研习社
发布2018-03-16 17:02:03
9860
发布2018-03-16 17:02:03
举报
文章被收录于专栏:AI研习社

在知乎看到「你实践中学到的最重要的机器学习经验是什么?」这个问题,相信经验对于许多刚准备入门机器学习的同学来说是必不可少的,因此AI研习社选取了3个精华回答给到大家~如果你也有好经验,欢迎在本篇文章留言或移步社区讨论(http://t.cn/RYYgrSy)。

@宋一松(http://t.cn/RYMBkBB)说:

如果是说工业界的实践的话,我觉得最重要的经验是:

永远重视造工具

Best Engineer Builds Tools

在机器学习领域,好的工具包括但不限于:

  • 可以方便地添加新数据,新feature,且多人可以同步进行互不干扰
  • 可以快速地训练出一个新模型
  • 可以一键部署模型到生产环境,做A/B测试
  • 可以实时看到A/B测试结果,什么指标涨了什么跌了
  • 可以立刻做深入分析,发现什么情况下新模型表现得好,什么情况下不行
  • 可以快速地循环反复上述步骤

为什么这很重要?因为这决定了你是可以三天做一次迭代还是三周做一次,还是三个月

机器学习有其玄学的一面。面对这种不确定性,一个粗暴却有效的手段就是多试,快速迭代。但很多人根本快不起来。他们把大量时间浪费在了setup和等待上。setup数据,setup模型的训练,等待模型的训练,setup实验,等待实验的结果。

如果你迭代的周期是别人的五倍,那你需要比别人准五倍才能拉平。这还是假设大家都是单线程的情况下。如果别人的工具足够好,可以同时起五个实验,你要怎么办,比别人准二十五倍?

实际工作中,我见过弱团队用好工具,却没见过强团队用差工具。

Best Engineer Builds Tools.

@李韶华(http://t.cn/RYMrzPG)说:

理解模型的基本假设,看自己的数据是否符合这种假设。任何模型都是有某种假设的,如果数据不符合这种假设,就不太可能学出有意义的模型并用于预测。

比如LDA(主题模型),假设是在同样一批文档中经常共现的词,语义上往往是相关的。这种特性不仅在自然语言中成立,在一些领域,比如每个人经常访问的网址集合,可能也是成立的,所以LDA也可以拿过去用。但如果数据不符合这个特性,套用LDA就是没有意义的,比如每个球队里的队员,可能并没有因为属于一个球队而具有什么相似性。

再举个例子,CNN(卷积神经网络),它的基本假设是特征的不同维度之间有局部相关性,卷积操作可以抓住这只局部相关性,形成新的特征。比如自然语言里,有重复出现的bigram,或者图像里代表性的局部像素块。不满足这种局部相关性的数据,比如收到的邮件序列,这种局部相关性很弱,那用CNN就不能抓到有用的特征。

最后,高斯copula,在量化金融里曾被广泛使用,把债券之间非高斯的相关性用copula转化成高斯然后拟合。然而这个模型隐含的假设是这种相关性符合瘦尾分布(thin tailed distribution),即罕见事件发生的概率非常非常低。这个不合理假设导致对黑天鹅事件概率严重低估,曾被视为2008年金融危机的根源之一。

@赵耀(http://t.cn/RYMrLuv)说:

0:不要恐慌。这一点并不跟任何机器学习技能有关,但极其重要。某种意义上机器学习是一个算法即是正义,特征即是真理,参数维护自由,命中全靠信仰的游戏。它是很强大,能让很多曾经看来不可能的事情发生。但同时,有太多可能会出错,而这些错误很有可能同时发生。总之,辛辛苦苦调好一个算法,跑了一天,运行出来的结果跟瞎猜差不多是非常正常的事。然后就需要各种各样的(玄)tricky (学)parts来拯救世界。此时就是检验信仰的时候了,请相信你的算法。问题可能是训练集太小,预处理不好,参数初始化位置不对,学习率过大,甚至是梯度打错了一个字符等等等等。总之,他们是可以被解决的。不要恐慌,保持耐心,控制变量,逐步解决。终于,等到凌晨四点,或者若干天之后的凌晨四点,当有意义的结果和日出同时到来,你会被莫大的幸福感所淹没。此时请到窗边伸展双臂摆一个Y字。Long May The Sunshine!

1:确定所有的输入都是足够有意义的。前面有很多答案都强调了训练样本的问题,非常对。以我的本行,脑机接口(http://t.cn/RqWibBL)举例。我们要让电脑理解猴子的想法,进而达到猴子脑控机械的目的。那么我们的输入是什么呢?显然,直接来自运动皮层的脑电信号肯定是要的。然而别的信号,比如房间的温度,猴子的年龄,大圣昨天吃的是黄桃还是橘子,大圣跟六耳最近是相处愉快还是非常想打一架,今天作为奖励的苹果汁是不是无糖的。这些都有可能影响到猴子的想法。但我们要把这些都作为解码器的输入吗?当然不是。通常情况下,我们只要来自运动皮层的神经冲动。而且在训练的时候,我们要给猴子足够的奖励,以确保它专心于任务。这样得到的训练样本才是有意义的。

2:预处理。这一点跟上一点都是为了保证进算法之前,我们能拿到描述这一事物的足够好的特征(feature)。还是接上面的例子。我们有了来自运动皮层的脑电信号。初始每个电极提供一个高频采样的电压值,我们是不是可以直接拿这个电压序列开始拟合呢?最好不要,我们要滤掉电压信号中跟神经冲动无关的部分,分清楚这些神经冲动分别来自于哪些神经元,最后用神经元的发放率(firing rates)来作为解码的输入。

3:不要迷信算法。说机器学习很玄学是在吐槽,它本身并不是巫术。还是延续这个例子,很多时候,预处理也是一串数学变换。既然有在非线性情况下也能应用的很好的算法,我们为什么还要预处理呢?直接全扔进去让神经网络一层一层自己捏呗?最好不要,且不说相当多问题都没有对深度学习而言足够数量的训练样本。即使是真有,这么做也并不会减少工作量,反而会在日复一日的调参数中变成科比。另一方面的问题是,我们认真选了feature,有了足够干净的输入,那是不是用更复杂的算法会有更好的结果呢?高概率不是。如果简单的模型可以产生能接受的结果,那么没有必要进一步复杂化。原因简而言之:没有什么算法的外推比得上线性模型。

4:想清楚结果的评价标准。这一点相对宽泛,比较常用的是结果的计算精度和在线计算所需要的时间之间的取舍。但并不仅限于此,一个好的评价标准可以使一个模型变为state of art,比如脑机接口领域的ReFIT Kalman Filter(http://t.cn/RYMgUAq)

当然,即使做到了以上四点。搭出模型之后还是需要相当长,枯燥,玄幻的调整,才能最终有效工作。这时请牢记最上面的第0条。保持冷静,五月四日与你同在。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-12-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI研习社 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档