注:这是我在“我爱公开课”上做的学习笔记,会在52opencourse和这里同步更新。随着Coursera和Udacity这样的注重交互式的网络课堂的兴起,相信传统教育模式即将遭到颠覆。欢迎大家在52opencourse这个问答平台上进行交流,希望能为大家提供一个开放、免费、高质量以及世界级的公开课中文交流平台和桥梁。
以下转自原文: Coursera公开课笔记: 斯坦福大学机器学习第一课“引言(Introduction)”
Coursera上于4月23号启动了6门公开课,其中包括斯坦福大学于“机器学习”课程,由机器学习领域的大牛Andrew Ng教授授课:
https://www.coursera.org/course/ml
课程刚刚开始,对机器学习感兴趣的同学尽量注册,这样即使没有时间学习,获取相关资料特别是视频比较方便。
由于工作繁忙的缘故,这批科目里我主要想系统的学习一下“机器学习”课程,所以计划在52opencourse和52nlp上同步我的机器学习课程笔记,一方面做个记录和总结,另一方面方便后来者参考。
Coursera上机器学习的课程学习过程是这样的:看Andrew Ng教授的授课视频或者看看课程相关的ppt;答系统随机出的题,一般5道题,单选、多选甚至填空,满分5分;编程作业,需用Octave(和 Matlab相似的开源编程语言)完成,提交给系统得分,在规定时间内完成,均取最高分,超过规定时间会对得分打折。
第一周(4月23日-4月29日)的课程包括三课:
- Introduction(引言)
- Linear Regression with One Variable(单变量线性回归)
- (Optional) Linear Algebra Review(线性代数回顾)(对于线性代数熟悉的同学可以选修)
1)机器学习定义:机器学习是人工智能的一个分支,目标是赋予机器一种新的能力。机器学习的应用很广泛,例如大规模的数据挖掘(网页点击数据,医疗记录等),无人驾驶飞机、汽车,手写手别,大多数的自然语言处理任务,计算机视觉,推荐系统等。 机器学习有很多定义,广为人知的有如下两条:
Arthur Samuel (1959): Machine Learning: Field of study that gives computers the ability to learn without being explicitly programmed.
注:Arthur Lee Samuel (1901–1990) 教授是美国人工智能领域的先驱,他设计了一些下棋程序,可以通过不断的下棋来学习,从而达到很高的下棋水平。
Tom Mitchell (1998) : Well-posed Learning Problem: A computer program is said to learn from experience E with respect to some task T and some performance measure P, if its performance on T, as measured by P, improves with experience E.
例子:对于一个垃圾邮件识别的问题,将邮件分类为垃圾邮件或非垃圾邮件是任务T,查看哪些邮件被标记为垃圾邮件哪些被标记为非垃圾邮件是经验E,正确识别的垃圾邮件或非垃圾邮件的数量或比率是评测指标P。
2)机器学习算法的类型
1、有监督学习(Supervised learning):通过生成一个函数将输入映射为一个合适的输出(通常也称为标记,多数情况下训练集都是有人工专家标注生成的)。例如分类问题,分类器 更加输入向量和输出的分类标记模拟了一个函数,对于新的输入向量,得到它的分类结果。
2、无监督学习(Unsupervised learning):与有监督学习相比,训练集没有人为标注的结果。常见的无监督学习算法有聚类。
3、半监督学习: 介于监督学习与无监督学习之间。
4、强化学习(Reinforcement learning): 通过观察来学习如何做出动作,每个动作都会对环境有所影响,而环境的反馈又可以引导该学习算法。
其他的类型包括推荐系统,Transduction,Learning to learn等。
3)有监督学习详解
有监督学习主要会提供一些标注样本,分为两大问题:回归和分类
房屋价格预测-回归(Regression): 预测连续的输出值(价格)
乳腺癌(良性,恶性)预测问题-分类(Classification): 预测离散的输出值(0, 1)
例子: Google News, 基因序列分析,社会网络分析,市场切分等...
特别的例子:鸡尾酒会问题(Cocktail party problem)
“ 鸡尾酒会问题”(cocktail party problem)是在计算机语音识别领域的一个问题,当前语音识别技术已经可以以较高精度识别一个人所讲的话,但是当说话的人数为两人或者多人时,语音识别率就会极大的降低,这一难题被称为鸡尾酒会问题。
鸡尾酒会问题算法(一行代码):
[W,s,v] = svd((repmat(sum(x.*x,1),size(x,1),1).*x)*x');
一些参考资料:
解决方法ICA demo: http://research.ics.tkk.fi/ica/cocktail/cocktail_en.cgi
http://www.vislab.uq.edu.au/education/sc3/2001/johan/johan.pdf
http://www.physorg.com/news75477497.html
http://en.wikipedia.org/wiki/Cocktail_party_effect
http://www.scientificamerican.com/article.cfm?id=solving-the-cocktail-party-problem
以下关于"cocktail party problem"的文字引用自该链接:http://xiaozu.renren.com/xiaozu/121443/thread/335879281
stanford机器学习公开课(ml-class.org)第一章unsupervised learning那段视频里解决鸡尾酒会问题(cocktail party problem)就写了一行代码:
[W,s,v] = svd ((repmat(sum(x.*x,1),size(x,1),1).*x)*x');
lz土人感觉是用了PCA的方法。。可是W运行出来丝毫没有unmixing的效果。。。用的是采样频率16kHz的Speech-Speech和Speech-Music两个样例。。
google这条代码有post说这是ICA,我就迷茫了。。。看不出来怎么是ICA了。。折腾一夜了,毫无头绪。。。
顺便求此问题的demo。。各种语言均无妨。。
http://cs229.stanford.edu/notes/cs229-notes11.pdf
CS229notes
Independent Components Analysis
[回复]
52nlp 回复:
2 5 月, 2012 at 10:17
thanks a lot!
[回复]
要坚持哦
[回复]
52nlp 回复:
6 5 月, 2012 at 12:57
其实第二课笔记已经在“我爱公开课上”连载了,只是近期有点耽搁,还没写完,写完了我会放过来的:http://52opencourse.com/83/coursera%E5%85%AC%E5%BC%80%E8%AF%BE%E7%AC%94%E8%AE%B0-%E6%96%AF%E5%9D%A6%E7%A6%8F%E5%A4%A7%E5%AD%A6%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%AC%AC%E4%BA%8C%E8%AF%BE-%E5%8D%95%E5%8F%98%E9%87%8F%E7%BA%BF%E6%80%A7%E5%9B%9E%E5%BD%92-linear-regression-with-one-variable
[回复]
求问,有什么稳定的可以看到上课视频的方法,貌似在youtube上的视频都被墙了。谢谢。可以的话麻烦发邮件告诉我:sikisis@163.com
[回复]
52nlp 回复:
5 7 月, 2012 at 13:24
coursera的视频不在youyube上,可以直接下载的,详见:
http://52opencourse.com/252/%E5%9B%BD%E5%86%85%E4%B8%8A%E5%87%A0%E4%B8%AA%E5%85%AC%E5%BC%80%E8%AF%BE%E7%9A%84%E7%BD%91%E7%AB%99%EF%BC%8C%E8%A7%86%E9%A2%91%E4%B8%8D%E8%83%BD%E6%89%93%E5%BC%80%EF%BC%8C%E6%9C%89%E4%BB%80%E4%B9%88%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88%E4%B9%88%EF%BC%9F
[回复]