`

雙月神話 by D.S.Qiu

阅读更多

雙月神話 by D.S.Qiu

 

 

 

一直都对机器学习,数据挖掘,自然语言处理都挺感兴趣的,一直也在看书,一开始感觉东西挺多了,也比较实在(大多都是可以直接应用的,不想之前学的数学理论没有什么直接的去处——当然这是十分片面的想法,其实一切高级的东西都跟数学脱不了关系,所以没事还是要多看些数学相关理论)。当然高级的东西除了可以给你带来点神奇之外,就是可以让你感觉到不着边际,比如就数据挖掘来说,没有数据怎么挖掘,自己看书就少了动手的背景,当然这觉得不可以成为你不去动手的理由。我记得我一开始接触的是《数据挖掘导论》(英文影印版),在此之前真心没有看过英文版的书,买书的时候也是丝毫不把英语阅读的障碍放在眼里,这本书还是很不错的,介绍的方法很全,可以说是面面俱到,但是也对少了些深入的东西(只是做了引入),诸如上面的神经网络和支持向量机都有涵盖,但是只是介绍了初步的理论,但我觉得这对于初学者已经足够了,至少我还是重那本书里面对神经网络和支持向量机的有了足够的认识,至少可以说出什么是什么。后面的聚类的相关算法就看得不是很明白了,也没有很花时间去看(博主做事总是急于求成,所以看书都要看个数遍,才能有个大致的掌握)。所以如果要博主推荐数据挖掘的入门书的话,首推就是《数据挖掘导论》(Pang-Ning Tan, Michael Steinbach著这本书。当然这本书《数据挖掘技术概念与技术》(Jiawei Han;Micheline Kamber著)也是相当不错,应该会比Pang-Ning更好,至少从出版时间上还是可以找到些依据的。再说下翻译的版本,我也浏览了下,感觉就是一个差,而且都是一个“范明”的老师翻译的,严重觉得不够到位(有点片面,至少给我感觉是这样的),所以我还是推荐去读原版的。至于数据挖掘的第三本书《数据挖掘实用机器学习技术》我也有,因为整体排版有点不怎么喜欢,就一直没有看,估计也是不错的吧。

记得看《数据挖掘导论》的时候去今年暑假的时候,那段时间买了好一些书有《人工智能:一种现代方法》,《深入linux内核架构》,《现代信息检索》以及《云计算与分布系统:从并行处理到物联网》等,虽然都没开始看,但每次看到这些书都很激动,只是时间有限,不能大量读书。接着是9月份开学初(其实博主是9月中旬才开学的),帮一个朋友做了他的硕士论文实验——自然语言方面的,当然博主那是对自然语言还是空白,但还是做了下去,熟悉了下,感觉还是要买书,就弄了一本《语音与语言处理:自然语言处理、计算语言学和语音识别导论》看了前面的一部分,这本书也没有让我失望,浅显易懂而内容丰富,当然这也是对于入门者来说的。这个实验忙了一个月,就剩下最后一期目标要到后一阶段才做,这时我也没有做工作,继续看书ing。

看什么书呢,首先,我粗略地复习了一遍《线性代数》和《概率论》,还有看一些统计和矩阵方面的书,虽然好像也是没有什么用处,有点花了时间没有效益(对于难的理论自己的数学基础还是不够),其实这主要是自己没有专研地看书。翻了几本《线性代数》和《概率论》的书之后,就开始看《模式分类》(第二版,Richard O. Duda等著)中文版和《机器学习》(Tom. Mitchell著)中文版,还有《神经网络与机器学习》(Simon Haykin著)中文版,之所以看中文版,是因为博主疲于自己买书,然后图书馆有中文版,再者是中文版看起来相对会快点(书中的数学理论较多)。起初看这三本书的时候感觉都不是很好,都没看进去,但最后还是反复的让自己的使用译者的写法。几天下来,还是可以发现这三本书是很不的,都各有所长。既然入手了,那就只有尽情地享受书中的理论吧。

等我差不多把这三本书的前面几章的理论都看的差不多了,然后《神经网络与机器学习》有模式分类的实验(本文标题就是来源于这本书),博主就琢磨着自己去手动实现,第一个是感知器法则,这个算法还是很简单的,主要的实现难点在与各个分量的权值的更新,花了三天用Java搭建了实验的背景:


感知器法则算法就用了一天就搞定了,继续加油。下面就是要实验用多层神经网络来对线性不可分的情况进行分类,首先看到书上的要注意的细节有很多:权值,学习率,sigmoid函数,期望响应等都要有针对的设置,一下子感觉好像很难完成,不确定因素太多了,有点畏难心里,一直没敢开始(就索性跟同学玩了几天的红警)当然也有反复看书加深对理论的把握,后面不能再拖了,觉得如果要实现终要开始,当然也遇到很多问题,其实主要是主观问题——一直都是死在编程的路上,程序表明上没有问题,其实有很多问题,其中最大的一个问题就是我在训练时没有调用向前计算的操作,直接调用反向反馈传播操作,还有没有循环所有训练集,每次都只调用第一个来训练,总之无奇不有。自己写得代码可读性实在太差,自己也一次性delete,真正体会到可读性可以加快开发速率。在写之前很担心上面说的细节没有弄对就得不到理想结果,其实到后面得到理想的结果,好像没有碰到那些细节问题,所以一切都是吓自己。

从这个实验我得到如下总结:

万事开头难,不要有畏难心理,开始才是“难”的最好解决方法。当然要做足准备。

很多时候打倒自己的不是自己心里的害怕出现的困难,而是倒在这种害怕心理和在通往这个困难的路上,其实你认为你已经遭受了你意料的困难了,其实完全不是。

当有太多不确定因数,要善于思考,找到方向,敢于尝试。比如,在做这个实验进行反向传播修改权值的时候,首先就应该得到你要修改的趋势(变大或变小),而不是盲目的尝试。

要会寻求帮助,当然在遇到困难的时候博主一般都是求助于google,因为博主认识的人很少,学习他人的优秀的东西, 在查看别人对BP算法的实现,发现自己的代码简直没法看,很恼怒(直接把代码删除了重新写),还从中得到一个重要的信息——BP算法就那样,没有那么多要注意的,很容易实现的。

这里在推荐一本书《Pattern Recognition And Machine Learning》(Christopher M. Bishop)这本书很不错,博主看到RMF的章节,有时间一定拜读。除了看这些书,最不能忽略的就是数学理论的恶补,尤其线性代数、矩阵好统计学的知识,先说到这里,下面贴一张自己的实验效果图:


                  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 大小: 154.9 KB
  • 大小: 11.1 KB
  • 大小: 126.5 KB
1
5
分享到:
评论
2 楼 DSQiu 2012-11-29  
dingdang_j 写道
什么东东 貌似还不错 仔细看看

用多层神经网络的做的模式分类……
1 楼 dingdang_j 2012-11-29  
什么东东 貌似还不错 仔细看看

相关推荐

Global site tag (gtag.js) - Google Analytics