竹笋

首页 » 问答 » 灌水 » 绝知此事要躬行,继续谈我们该怎么学习
TUhjnbcbe - 2021/2/25 14:25:00
北京有那家医院治白癜风 http://yyk.39.net/bj/zhuanke/89ac7.html

题图是话剧《戏台》谢幕,我带楠子去看的,很好看,很精彩。主演是陈佩斯和杨立新。(注:我仅在开灯谢幕后打开手机拍了些照片,演出全程未动手机,看话剧、音乐剧的时候,因为音响和画面的原理,如果有人玩手机,比看电影的时候,有人玩手机更烦人。)

题目来自于陆游的一首诗,《冬夜读书示子聿·选一》,全文为:

古人学问无遗力,少壮工夫老始成。

纸上得来终觉浅,绝知此事要躬行。

这诗接近白话,我就不翻译了。

最近很久没有更新,但是跟之前很久没有更新的原因并不同。之前很久没有更新是因为当时公司遇到了一些困境,我心情不好,加之在做一些事情挽救,所以没有空更新。最近一段时间没有怎么更新的原因其实是因为我在潜心学习机器学习。(不懂技术的读者不用担心,也许会提到一些技术词汇,不过,本质上这篇仍旧是纯粹的学习方法论讨论,不是技术文章。)

09-10年,我和霍炬在北京创业做银杏搜索的时候,我就开始对机器学习很有兴趣了。

机器学习简单的说,就是如果你给计算机一些数据,比如历史上房价和房屋面积,地段位置的数据,然后,用某种算法进行计算,你就可以得到一个关于房价,房屋面积,地段位置的函数,你就可以用这个函数来根据房屋面积,地段位置来预估一个房子的价格。其实人本身就是有这种预估能力的,但是如果计算机有了这样的能力就可以在很多领域试图代替人。

我们当时在做搜索,搜索和机器学习天生就有点关联。都涉及到怎么把文本建模成机器可以理解的形式,怎么计算文本之间的相似度,等等。事实上,Googl也是全球最早大量使用机器学习的一家公司之一。

但是,那时候学习起来很难,首先第一个难点都是,当我说我想学习机器学习的时候,所有人都告诉我,这需要很深的数学知识。而我的数学底子是啥呢?我大学的时候,沉迷写代码,曾经在高数课上旷课无数,以至于高数最终是个位数分数挂掉。考试的时候,我连积分微分到底是啥符号都不懂。而线性代数,也基本上完全没理解。

那时候,刚好我的好友徐宥从美国回来,他在这方面是专家,给我讲了一通,什么叫做SuprvisdLarning,什么叫做UnsuprvisdLarning,其实我都是一知半解的。我自己买了一堆书,也没有找到头绪。后来,我就开始直接用一些机器学习的库和工具,但是,因为没有理论知识,所以,做出来结果,是好是坏,如何优化,都不知道。

当时,我已经是国内不多的最早开始学习iPhon开发的几个人了。慢慢的随着iPhon的崛起,当时搜索公司因为美国次贷危机影响没有融到资,我的精力满满的就转移到了iPhon为主。

12年左右,机器学习方面的大牛斯坦福教授吴恩达,创业搞了Coursra,在上面发布了自己的机器学习课程。一时间引爆全网,我在第一时间就报名了。听了几个星期的课,数学方面其实没有想象的难,但是真枯燥,真是一言不合就求导。我简直每堂课都被看哭,数学方面虽然不难,但是奈何我确实不会啊。所以,后来就放弃了。

前些日子,Googl发布了Tnsorflow,我很有兴趣,研究了一下,发现还是比较好上手的,而且文档算是比较全,社区也很活跃。于是,我设计了一个野心勃勃的项目,交给我公司的CTO,让他去抓取数据,我们用Tnsorflow,神经网络来做这个项目。做了大概两三个星期,主要的问题有几个,初步用一个小样本集,已经动辄就需要几个小时了,全集上来的话,可能需要几个星期。小样本集的效果已经有些问题了,但是优化需要提出改进方案,不断的做实验,而一次实验几个小时,工作效率很低。而且出于我们对机器学习理论的不够理解,有很多参数不知道怎么去取舍。

于是,我就跟CTO说,项目暂时停止,我们都去学机器学习吧。

我又开始学吴恩达的机器学习课程。在家里听课,出门的时候把笔记本带着继续听课,吃饭的时候,用手机听同步好的课。一开始真是煎熬。

有一次,我和楠子在星巴克,她在旁边写稿子,我在学习机器学习。上海已经开始热了,但是商场和星巴克还没开空调。午后本来就容易犯困,而我又正好看到最枯燥的吴恩达老师讲数学的部分。一阵睡意袭来,再醒来的时候,发现自己坐在那里睡着了10多分钟,一个章节讲完了,一点印象都没有。怎么办?再重新听一遍。但是又睡着了。最后,那一段8分钟的视频,我听了1个多小时,听了无数遍,才算听明白,因为中间睡着无数次。

听完一个大章节,也就是所谓一个星期的课,然后是一个Quiz(测验)和一个Assignmnt(作业)。

做Quiz的时候,才发现自己根本没听懂,或者听懂了一个大略,老师讲的细节,没听明白,或者没记住。“LarningRat设置大了会造成什么后果?”,“在这个情况,我们是否可以得到结论这个函数是有全剧最优的”。怎么办呢?只好再去看一遍视频,再做一次Quiz,直到每一个细节都掌握了为止。

然而,等到做Assignmnt的时候,才知道,原来我也只是懂了一些理论,具体怎么用在代码里面呢?恩,还需要再看一遍视频,再思考思考。写完一对,答案不对啊。为啥呢?是函数理解错了?实现错了?还是少些了一个标点符号,写错了一个函数名?

上星期,我发现经过小一个月的学习,我已经开始对这门课越来越有理解了。于是我开始加快进度,本来需要的2个月的课程,被我在2-3天里面全部解决了,Quiz和Assignmnt也都做对了。

现在只差两个课的Quiz和Assignmnt,我就可以结业了。于是我觉得该slowdown一下,实践一下。于是,前天,我开始设计怎么在实践中使用这门技术。

我自己有一个论坛OurCodrs.

1
查看完整版本: 绝知此事要躬行,继续谈我们该怎么学习