来CMU上了两门系统课,计算机系统基础 18-600,和分布式系统 15-640。本来就是转专业,还是希望自己有时间慢慢整理计算系统里面比较基础的东西吧,主要会整理这两门课里面的东西。
物理篇及转专业
这里先占个坑,以前读本科的时候,没有好好去思考物理里面最基本的东西和问题,现在都过了4,5年了,心里还是念念不忘。
这里占个坑,希望自己如果有余力慢慢把本科的基础课程整理一下,也算是了却一桩夙愿。
兴许自己还有点气力,看下费曼,朗道,哈哈。对于,大神而言,这些应该都刷过了,不像我这个小白。不过能把基本的问题复习和理解清楚,对我来说也就够了。
记得本科开始接触上转换发光纳米材料时,洪老师和我说,你开始学什么,接受新的东西的时候,你总是会占在自己的基本上面去思考。我也算转码快两年了,感觉coding是提高了,但是自己零零碎碎,越学越杂。感觉不固本回元一下,自己的脑壳就疼。
物理应该是研究物质相互作用及其变化规律的一门学科。普通物理里面最最基本的四门课是力,热,光,电。
力学是所有课程里面最最基本的,然后是热学,光学和电磁学。普物里面的尺度都是宏观的。
然后之后的课程就是四大力学,理论力学,热力学统计,电动力学,量子力学。然后里面,理论力学是从另一套体系去构建原来的经典力学,然后其中涉及的思想就影响很深远了。然后热力学统计的话,就是从微观的角度去阐述热学的现象,然后感觉其中最精华的部分是相变。电动力学的话是描述宏观,高速的物理学规律的一门课。量子力学是描述微观,低速的现象。
然后“综合”的课程有固体物理,半导体物理,原子物理,核物理等等。
然后谈谈转专业,时代变化很快,基本的朴素的思想总是不变,就像苏轼说的:“自其不变者而观之,则物与我皆无尽也。”把基本功打好,学东西学扎实了,自己有可能在这个瞬息万变的时代,找到自己的立足点。我的本就是物理,固本培元,然后有些可以借鉴到自己所转出的领域的经验和方法到系统和机器学习里面。
机器学习入门绪论
简单介绍
这学期选了 introduction to machine learning, 在ml这边相当于 15-513 这样子的入门课,后续课程有很多 10-702 statistic machine learing, 10-703 deep reinforcement learning control, 10-707 introduction to deep learning, 10-708 graphical model, 10-725 convex optimization …
http://www.cs.cmu.edu/~pradeepr/701/
big picture of machine learning
data — ML algorithms —-> knowledge
这个图应该可以很好的解释什么是ML。
比如imageNet里面你有image和对应的label,你通过dl学习到了,有关于input image和output label的knowledge.
在比如强化学习里面,你通过比如:deep q-learning的方法学习了,你自己的approximate q function. 然后这个东西,对你之后agent在environment里面做action选择产生直接影响。
Three Axes
有了上面的图,你可以从三个角度去总括机器学习,分别是数据,算法,任务(具体要解决的问题)
Data
首先是数据,
分完全被观测到的数据;
部分被观测到的数据,这里部分被观测到,我的理解是有些sample的一些variable是未知的,
然后partially observable MDP也有这样的意思,毕竟信息不完整。
后面有会banch的算法来解决这样子的问题,比如EM等等。
Algorithm
算法这里,就主要分两大类,基于模型和不基于模型的,既然涉及到模型,这里讲下模型的定义吧
Model
感觉在机器学习里面的模型主要指的是涉及变量之间的关系,特指他们的概率分布上面的联系,比如,对于随机变量X,Y,
X是input,Y是output,那么这里的模型就是P(X, Y),来描述他们之间的关系,这个是probabilistic model of the data
Model-based
总的来说model-based methods是这样子的流程
data — model learning —-> model —- model inference —-> knowledge
model learning: learning from data to a model
- 简单的来说,model是对data的总结:model-based方法会比较省内存,学完一个model后,predict/inference的时候你不需要遍历你的data了
- model也是描述数据是如何产生的:这里我的理解是model揭示了变量之间的关系,或者揭示了问题所涉及的变量之间的机理(mechanism)
- E.g. 给你症状和疾病的数据,然后所学习的model就是所谓的病理了,揭示了症状是如何与疾病相联系的
model inference: from model to knowledge
- 知道物之理后,我们就可以推演了
- 比如:给你症状,根据病理,推演出这个是什么疾病
然后,细分的话,有可以分为probabilistic model of the data methods, parametric models methods及nonparametric models methods
probabilistic model of the data methods
parametric models methods
nonparametric models methods
Model-free
总来的说就是不去学习一个model,而是直接通过algorithm学习knowledge。比如在强化学习里面q-learning, 我不去学model,我直接通过q-learning学习value function和policy。
Tasks/Knowledge
prediction
预测,根据输入,估计/预测输出,
主要分分类问题(classification)和回归问题(regression)两大类
description
会涉及聚类、密度估计、降维等,另外一种叫法叫非监督学习(unsupervised-learning).
- 需要处理的数据里面没有标注
比如:给你一个文档,你通过算法得到了词频的分布
再比如:给你一堆图片,你根据他们的相似度,做了一定的分类
再比如:nlp里面的一些ebedding方法,把word根据某些规则映射到一个向量空间(语义空间)里面,单词的意思的相近与否,可以通过这个空间里面点的距离来判断
字面上看,聚类、密度估计的确是对无标注的数据的一种描述吧,更确切的说,应该是一种表述和呈现方式(presentation)
Machine Learning Subfields
在机器学习里面,根据这三个角度上面不同的组合就会有不同的子领域
supervised learning
数据这里包含了inputs和相应的标注
tasks这里涉及的是prediction
unsupervised learning
数据这里包含了inputs而不包含相应的标注
tasks这里涉及的是description
semi-supervised learning
数据这里包含了inputs,包含了部分的标注
tasks这里涉及的是prediction
如果,我们不仅仅只有observations,我们还可以有action (control),那么我们又会有
reinforcement learning
markov chain —>
multi-agent system
猪队友
三个projects里面,自己真是猪队友,这里猪是指自己虽然花时间了,虽然看起来努力了,但是并没有很好的去配合队友,
没有很好的带动队友,和队友形成合力。对于701的医学图像分割,感觉一开始的时候,自己就把队友带沟里面了,用mask-rcnn搞,其实也是踩了一个坑,感觉更重点是u-net,其实从更简单的方面切入,复现然后在进一步会更好吧。但是用mask-rcnn也有一些结果。但是我想说的是,没有和队友一起充分研究讨论,决定以后的走向,的确是一件更危险的事情。然后是nlp的project,感觉自己负责answer的部分,情况太多了,这个问题没有很好的解决,只是处理了一些naive的情况,然后这里的问题是分工太明确了,和队友之间并没有很好联动起来,也没有和TA充分讨论,错过了一些改进的机会。感觉,还是需要自己解决了一些问题,然后有问题在和队友讨论,不行在找TA。和队友讨论不同的方案,尝试不同的方案,不要就这样了,只要有改进的机会,还是要尝试下的。剩下最大的问题就是,限制这一切的时间,时间的大局观。感觉也不是没有计划,不是没有进度,而是没有一个大局观。这个真心难。剩下还有703,我觉得还是有点搞头。现在队友没有时间,自己先看下,有些想法在和队友讨论,分工,推进。清晰思路,很重要。感觉光顾着去马上开始做,还不如好好想想怎么做,或者结合着做一些,更好的去想有帮助。
路还很长很长
这几天被EM算法,虐了好几天,这是我学的最费力的一个算法了,不知道为什么脑子总是转不过弯,没有一个清晰的图景。还是有空再好好看看书吧,捋一捋。发现,赶due,赶due,赶着了自己会忘记做作业的目的了,是为了更好的理解这个算法,而不是完成一个任务。但是,这种心境真的还是很难去保持。眼看due在前,也不会去想其他的。感觉自己的最大的问题还是时间的管理上,所有的projects,都没有如期推进,都是到最后了,才想起来怎么去做。一周解决一个问题,慢慢解决就有进度了。感觉还是需要不断调整自己的计划吧。但最主要的问题是,自己对自己要处理和解决的问题理解的不够清晰。其实就算是不清晰,也应该顶一个阶段的目标。就算时间紧,也要有章法,去整理反思解决和自己的队友配合,不要失去了方寸。如果能真正坚持这个过程,自己应该也会有所成长吧。
最后的最后了
突然发现今天是4-22,离真正毕业还有一个月多,自己还有projects,还有考试,还要继续找RA,虽然和MCDS的大神比压力都不大,但是想做好也是不容易。感觉还是一件一件做吧,有问题多和队友讨论,很喜欢CMU组队的作业,有问题可以相互交流和借鉴,但是前提是自己也要做一些前期的工作,需要自己静下来。我一直觉得自己是一个静不下来的人,涛涛说的很对,尽量可能的话还是自己去探索,不要动不动就问别人,其实同组的师弟就很好,比较喜欢自己去解决问题,感觉自己还是要向他们去学习。其实,问别人还是自己搞,还是有一个平衡吧,有时候沟通的确是打开思路。嗯嗯,加油~还是真的很喜欢这里,在gates的六楼自己占一个桌子,静静地去学习,然后会看到队友微笑着走过来。希望一切都顺利,找到RA,在这里在享受一年。