走了半年依旧小白的机器学习之路

感觉半年了,总算正式用NN做出点开心的东西了,马上到春节了,就总结一下我的艰辛历程。

一、从《数学之美》开始

2017年经历了好多人生大事,5月我结婚啦,不久前我有了我的女儿~

我和我夫人已经认识7年了,我们目前都是博2,她做食品,我做生信,一个做饭一个修电脑,简直666。3月写基金本子,之后很长一段时间我除了做科研,还沉迷在东野圭吾复杂的逻辑和阿加莎·克里斯蒂精妙的推理中,主要是因为科研做不下去,用统计的方法做我现在的组学数据并分析不出来什么好结构,也是各种沮丧。

推理悬疑小说看的差不多了,感觉看不下去了,最初那些推理大佬的套路现在看都非常幼稚,因为后人把这些套路用了N遍了。记得Holmes说的,如果你看过100年内所有伦敦的犯罪史,你就会发现目前的案件都是曾经单纯的重复(现在写到这句话突然有一种机器学习的感觉,就像加州大学的那个预测犯罪的模型)。于是在豆瓣上找书看,就看到了《数学之美》。看这本书主要是因为,首先我数学不错,也很喜欢数学,其次感觉评论都各种表扬,说什么学高数之前如果看这本书就不会挂什么的。我呵呵的一笑,我高数2学期睡过去的,期末照样年级最高,不过既然这么牛,就看看呗,从此,我就入坑了。

最初以为这本书就像《上帝投骰子吗?》那种,数学史科普,然而我错了,如果说很难遇到1到2个小时给我讲明白1个概念的那个人,那么这本书就用了几个小时给我讲明白了无数个概念,颠覆了我对科研和世界的认识。其中有句话特别赞同,就是在讲神经网络的那一章:

有不少专业术语乍一听很唬人。如果有幸遇到一个好心同时善于表达的科学家或教授,他愿意花1到2个小时的时间,深入浅出的为你讲解,你就会发现,“哦,原来是这么回事”。要是不幸遇到一个爱卖弄的,他就会很郑重的告诉你,“我在使用高深的XXX”或者我在研究“XXX相关课题”,列几个你看都不想看的极复杂公式,然后就没有下文了,如此,你除了对他肃然起敬外,不由得还会感到自卑。当然,还有好心却不善言辞的人试图讲清楚这个概念,但是他用了一些更难懂的名词,讲的云山雾罩,你发现你听了好几个小时,结果更加糊涂了,白白浪费了时间。最后你会得出这么个结论,反正我这辈子都不需要去弄懂它了。
这个并不是说笑,这是每个人的亲身经历。首先无论大家学什么,很难遇到一个能1-2小时帮你搞懂一个概念的好心人,但是身边却有一大批喜欢向你卖弄的人,然而作为勤奋和渴望求知的你会去听一门课,想通过听课搞懂,然而听了几节课你就放弃了,你会发现自己更糊涂了,是白白浪费时间,最后感叹一下,好在以后不用用到这个概念。

看完这本书,我尝试用隐马等方法去做我的科研(因为以前学过贝叶斯的课),然而效果都不好,最后想,为啥不用机器学习,既然这么火?于是,从此之后我就开始了我机器学习之路。

二、从机器学习到深度学习

机器学习,基于python的多并且容易写,于是开始看python。对于2天半看完小骆驼(perl语言)的我,学python也不费劲。之后偶然看到了MOOC上,北理工嵩天、礼欣老师的课程,于是开始预测房价,人脸信息提取,手写识别,猫狗大战。第一次用这些感觉好神奇好神奇,接触到了神奇的sklearn。感觉做机器学习成本这么低啊,两下就能写一个模型。

Kmeans和DBSCAN聚类,PCA降维,SVM等等,都能解决例子中的问题,然而都解决不了我科研上的问题……其实我对于这些的理解就是,给它特征让他找规律,找到规律用这个规律去预测其他数据,简直和多元线性拟合道理差不多(实际差很多=_=)。就像sklearn的函数大多有个fit,predict的方法,也就是你要用数据去训练,让他找到规律,之后预测。

我的问题是,2类表型,有很多结构化的特征数据(50w条左右),怎么样通过特征直接预测表型?

  1. 最早刚学kmeans和DBSCAN,就想这两个说不定本身就是2个类,独立能聚在一起,新出现的数据和他们能聚在一类就行了啊,结果,自己都聚不到一起更别说聚别的,失败;
  2. 之后决定是不是垃圾属性太多了,PCA降个维,再聚类,失败;
  3. 学了SVM,说不定数据之间存在超平面,来来来训练一下,再预测,准确率超低,失败;

现在想起来当时真2,因为课程直接应用的,所以我在做我的数据的时候没标准化,也不会什么交叉验证,不知道什么是过拟合,直接上手就跑程序……

最后想通了,首先机器学习的算法比较简单,其次不适用我这个分类问题(尤其是想起来最早用聚类算法去做感觉自己萌萌哒),所以接触到了深度学习。

这个词汇老唬人了,啊,深度学习啊,啊,人工智能神经网络啊,听起来就不像一个能学会的概念。其实,就连吴恩达都说,人脑啊,神经网络啊并没有什么关系,也就是人工神经网络(或者叫高端的名字:深度学习)的图看起来像神经元连接,反向传播算法像神经冲动传播,仅此而已,强行像。我觉得科学是朴实的,加入太多的文学色彩只能让别人觉得你,WC,碉堡了!老铁666啊,除此之外什么作用都没有。就像我导师说过,任何复杂的概念,都可以用简单朴实的语言去描述。

所以,我就开始了深度学习…….

三、“我就想知道怎么用”

感觉自己入门有点问题,最初机器学习就直接从例子走,感觉原理也不太清楚,直接会写程序感觉就很成功。所以深度学习我想正好补补基础,就买了一本周志华的西瓜书,《机器学习》。一本正方形的,纯白色的,上面还印着西瓜的书,感觉可简单,实际好难=-=。我硬是一个一个例子,慢慢跟着算,应该是学到SVM那一章就被打断了。

哎,说起来也挺可悲的,做博士事情太多,博2导师应该不太可能允许你用一学期去好好从头到尾学一遍机器学习和深度学习(其实还是自己心理压力太大了,我老板到没有逼我)。再加上夫人也怀上了我们的孩子,各种产检,学到SVM那里就断了,我在想有没有一种更快更有效的方法。还是先看视频吧,因为在学校,获取各种DL视频资源很容易,我大概有30G左右的视频,各个大学,各个机构的视频,看了好多,看的方式就像以前一样,2倍速,每次看完都感觉大脑都快缺氧了,估计老师这么讲自己也都会缺氧。很多讲计算算法,直接放幻灯也不好好讲,搞得我一脸懵逼,真的是从心底发出的声音,“我就想知道怎么用!”。

看来好多垃圾视频,对我最大的影响就是,让我对于深度学习有了初步的印象:

输入一堆特征值(结构化的数据),输入到一个计算网中(很多层,每层很多单元),每单元一个参数一个函数,一层一层依次计算,最后算出一个值,看看和目标值差异,反向传回去修正每层的参数,最后让挤出的这个值和目标值差异最小就成功了,说白了就是看在计算机算的快,让它拼命的算,每次都接近正确结构。

举个例子,(1,1),(2,4),(3,9)…(1E5,1E10),这么多数,一看随便一看就是: y=x2 y = x 2 产生的,但是如果你要用机器学习就得慢慢试,最后可能给他个100,算出9999.9,他还可高兴=-=。不过对于大数据和复杂问题,N眼都看不出来的事情,深度学习就太有用了。

接下来我知道了tensorflow。因为在乱搜的时候,看到了tensorflow playground,瞬间理解了之前学的各种层,计算单元,学习速率等概念,感觉Google真牛,看了一下tensorflow的中文文档感觉还是有点难,虽然描述的很容易……

之后我就遇到了第一个简化tensorflow书写成本的软件,tflearn,不知道能不能叫做软件。这个的API是全英文的,不过建模超级简单,超级激动。用着用着就不激动了,因为高级的东西实在看不懂,调参好难。

于是我又遇到了keras,中文各种完善,社区和群各种大佬。于是我就开始用keras。

四、回到最初的起点

女儿出生啦,小可爱,特别聪明。一出生就会睁眼睛,还会笑,天,只希望她以后别做科研……女儿出生的前后一个多月,没做科研也没看深度学习,当时吴恩达在网易的微专业课开了,有时会在那里看,感觉算是视频里面讲的最仔细的,公式都是一个一个慢慢推导。

满月之后,事情少多了,我也有空继续我的科研了。用keras建好模型,第一次模拟准确率到70%,好鸡冻,之后我又从别的组学数据里面提出来2个特征加进去,准确率飙升到90%。超级开心。

这时候突然发现,我除了加特征,完全不会优化这个模型。有一次准确率到达100%,超级开心,在群里咨询大佬关于模型的事情,被各种批,首先不能直接用总体训练,最后抽一部分测试;其次这个很明显是过拟合,还得调参。

于是回到了最初的起点,我再次翻开了西瓜书,好好打基础。(P.S.,现在已经根据文献加入dropout,earlystopping等,同时监控测试和训练集的ACC和LOSS,吐槽一下,最早我做测试训练集用shuf打乱,split分开的,似乎可以用numpy做,然而自己当时求速度没有好好看…..)

不过,这半年(其实事情挺多的,学习时间加在一起估计有3个月吧)深刻的意识到了深度学习的伟大,以后我会在这条道路上不断摸索和前行。

五、总结

《数学之美》入门,MOOC课程用python进行简单的机器学习应用,各路视频接触深度学习,玩tensorflow playground接触tensorflow,学了tflearn,最后接触了keras,目前在基本了解了并且已经应用了很多案例之后,再重新去看基础的公式和原理…….

好曲折,不过很开心。总算在26岁的年纪,在读博的年纪接触到了ML和DL,以后会继续好好做深度学习。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值