我整了半天的Advances in Machine Learning,然后发现我还有前半部分的没听。其实之前Machine Learning听过Andrew Ng的课,比较纯理论,基本上是用黑板上课全部推公式的过程,也是很受益匪浅的课。然后现在又跑来听李宏毅老师的课,希望可以做一下作业吧,包括后面很多用Neural Network的部分。Andrew的课和我后来上的estimation and detection很像,用到Neural Network部分的比较少,基本上都传统的有监督和无监督学习,包括贝叶斯, SVM, K-means, EM 这些算法的推论和讲解。
感觉自己的实践还是比较少的,所以又来听课了,并且还是记录一下可能会比较好复习。
这部分是课程Introduction。
机器学习
机器学习就是一个不断找函数的过程。函数其实是个很general的概念,并不是说只局限于我们叫得上来名字的比如什么二次函数,三角函数。函数只是一个一对一的对应关系,是一个map,负责将输入的变量和输出的变量结合起来。
个人觉得机器学习就是想要得到一能够做某项任务的模型,然后让机器模型帮你完成这项任务。我们现在见到的机器学习的例子也很多,当然大家能说出来的也很多,比如语音识别,图像识别,还有之前大热的Alpha Go,对话系统。这些都可以理解为利用模型来解决某个任务。
那么我们在寻找解决某个任务的函数需要经历哪些阶段呢:
- 首先要明确任务的类别,明确任务类别之后就能知道要找什么样的函数
- 其次要高速机器如何寻找函数
- 最后就是在给了机器这些资料过后,机器自己如何找到函数
想找什么样的函数?
这部分主要是根据任务的类型来决定的,需要根据任务的类型来决定我们需要找什么样的函数?
一般任务主要分为这三种:
Regression
对于需要我们输出具体数值的任务,我们将它判定为Regression的任务
Classification
对于需要我们输出分类的任务,我们将它判定为Classification的任务
Generation
对于需要我们生成新的东西的任务,我们将它判定为Generation的任务
如何告诉机器怎么样找函数?
在这个阶段主要是在明确我们手中有怎样的信息可以提供给机器,让他进行相应的学习:
Supervised Learning
有监督学习,在训练过程中我们给机器的训练集是一系列的输入输出对。我们需要告诉机器对于不同的输入,它应该得到怎样的输出。机器会根据训练集中的数据进行学习。
Reinforcement Learning
强化学习,在训练过程中我们给的训练集是一系列的输入奖励对,我们并不告诉机器每一个输入对应的具体结果是什么,只是赋予结果一些奖励。比如在下围棋的过程中,我们并不告诉机器怎样是正确的步骤,我们只是在一系列步骤之后告诉机器,最终的rewoard是多少
Unsupervised Learning
无监督学习,指的是在训练过程中,我们给机器的只有输入,没有输出,需要我们对输入的数据进行整理或者建模,然后再解决任务
机器如何找出某个函数的具体表达形式
这就涉及到函数的具体形式和函数中的参数值了,在我们选定某个函数之后,还需要用一系列的损失函数和优化方法来决定什么函数是最佳的解决任务的函数。
前沿研究
这部分就是之前我听课听到的一系列的课题,可以移步 Advances in Machine Learning
编程需求
课程有大概15个作业,有不同的难度等级。
Python = 3.6.8
课程的助教提供了一个用pyenv配置不同python环境的方法。
但我还是用着我的conda,觉得还不错。我安装的是miniconda,因为感觉anaconda有些复杂,只想装个conda的包管理器,不怎么用spyder,用的IDE还是pycharm。
(以下的一系列操作都在terminal中进行)
对于conda来说,可以先使用conda info -e
查看自己的电脑里conda的环境。在没有任何操作的情况下,我们都是在base环境中的,base前面也会有个*,表示当前所在环境。
如果你想配置新的环境可以使用 conda create --name myenv python=3.6.8
, myenv可以是随便一个你自定义的名字,python= 后面是你要安装的python的版本。
以后你在做某一个特定的项目的时候都可以使用 conda activate myenv
去激活你想使用的环境,然后在这个环境中用conda install ***
安装你想用的package,比如cv2, numpy等。
如果想突出这个conda环境可以用 conda deactivate
就可以退出这个环境,再回到base中去
但因为我是用pycharm写程序的,但是pycharm的默认编译器不一定是我在terminal中配置好的conda环境,所以在pycharm编译的时候,需要选择特定的编译器。
这时候打开pycharm的preference —> 左侧选择project中的project interpreter —>选择添加新的interpreter—>左侧一栏选择conda—>选择existing environment—>然后找到你安装conda的地址,点击env/myenv/bin/python 然后点确定.