李宏毅2021春季机器学习课程笔记1:Introduction, Colab & PyTorch, HW1

文章目录

    • 1. Introduction
      • 实例
    • 2. Colab使用与上传结果
      • 常用命令行
    • 3. Pytorch
    • 4. HW1

1. Introduction

  1. 机器学习的目的:寻找一个函数,对于给定的输入,这个函数可以输出相应结果。
    例如:一段语音输入,输出识别出的语言、一张图片输入,输出目标种类、“围棋”状态输入,得到下一步落子位置。
    李宏毅2021春季机器学习课程笔记1:Introduction, Colab & PyTorch, HW1_第1张图片
  2. 根据不同的功能,可以将函数大致分为以下几类:
    1. 回归问题(Regression): 输出是一个标量(scalar)
    2. 分类问题(Classification):给定相应输出选项(classes),输出正确的类型
    3. 结构化学习(Structured Learning):创造有结构的相应输出(图像、文件)

实例

  1. 如何找到这个函数呢?
    老师给我们以一个例子作为示范:预测Youtube上次日的流量
    李宏毅2021春季机器学习课程笔记1:Introduction, Colab & PyTorch, HW1_第2张图片

    1. 首先以当日流量作为自变量 x x x,次日流量作为预测目标 y y y
      流程如下:建立模型、定义损失函数、优化模型
      李宏毅2021春季机器学习课程笔记1:Introduction, Colab & PyTorch, HW1_第3张图片
      1. 建立模型:确定函数的结构、参数个数(weight/bias),需要相关domain knowledge以及一定的研究经验,这里我们先从最简单的线性函数: y = b + w 1 x y = b + w_1x y=b+w1x,其中 x x x是已知的特征feature; w w w权重weight, b b b是偏置量bias, w w w b b b为未知量,需要从数据中学习得到。

      2. 定义损失函数:损失函数是一个关于模型参数的的函数 L ( b , w ) L(b,w) L(b,w),他代表着预测值与标签值label的偏差量,越小说明模型与训练集的预测结果越接近。常用的 l o s s loss loss函数有MAE和MSE等。李宏毅2021春季机器学习课程笔记1:Introduction, Colab & PyTorch, HW1_第4张图片

      3. 优化模型:在做完一次训练后,我们要找到使得loss更小的模型参数,因此需要优化更新模型的参数。 李宏毅2021春季机器学习课程笔记1:Introduction, Colab & PyTorch, HW1_第5张图片
        我们使用梯度下降法(Gradient Descent)进行优化,

        1. 对于一个参数 w w w
          李宏毅2021春季机器学习课程笔记1:Introduction, Colab & PyTorch, HW1_第6张图片
          1. 首先随机选择一组参数 w 0 w_0 w0
          2. 计算出对应的损失函数 l o s s loss loss对于 w w w的梯度,
          3. 根据设定的学习率(learning rate)与梯度相乘作为步长,更新后 w w w
          4. 迭代多次更新 w w w(结束条件:梯度趋于0或达到迭代次数)
        2. 对于两个参数 w w w b b b
          李宏毅2021春季机器学习课程笔记1:Introduction, Colab & PyTorch, HW1_第7张图片
          李宏毅2021春季机器学习课程笔记1:Introduction, Colab & PyTorch, HW1_第8张图片
          与一个参数类似,只是微分变为偏微分,梯度下降时同时更新两个参数。
      4. 测试:将输入结果与测试数据进行对比李宏毅2021春季机器学习课程笔记1:Introduction, Colab & PyTorch, HW1_第9张图片通过对比发现,数据有明显的周期性,因此修改 F u t u r e Future Future为前 j j j日的数据,这样模型的参数量也会随之增加。

    2. j j j =1、7、28、56,分别进行训练测试后,我们发现随着自变量的增加,预测效果变好的速度慢慢变慢。
      李宏毅2021春季机器学习课程笔记1:Introduction, Colab & PyTorch, HW1_第10张图片
    3. 线性函数变为神经网络
      通过画出函数图像,我们可以发现线性的模型过于simple,不论如何调整参数都无法很好的拟合。
      李宏毅2021春季机器学习课程笔记1:Introduction, Colab & PyTorch, HW1_第11张图片我们需要一种更为有弹性flexible的模型,这种模型本身的问题称为model bias
      如下图,这时我们可以用很多条蓝线相加的结果sum来拟合李宏毅2021春季机器学习课程笔记1:Introduction, Colab & PyTorch, HW1_第12张图片
      通过极限的思想,对于任何一个分段线性函数Piecewise linear curve,甚至是非线性函数,都可以用足够数量的蓝线之和进行拟合。
      李宏毅2021春季机器学习课程笔记1:Introduction, Colab & PyTorch, HW1_第13张图片
      这种蓝线(hard sigmoid)可以用sigmoid这个函数近似表示
      李宏毅2021春季机器学习课程笔记1:Introduction, Colab & PyTorch, HW1_第14张图片这样我们只需要改变相应的 c c c w w w b b b就可以改变sigmoid的形状李宏毅2021春季机器学习课程笔记1:Introduction, Colab & PyTorch, HW1_第15张图片
      这样,我们就得到了用多个 s i g m o i d sigmoid sigmoid函数进行拟合的最终模型
      李宏毅2021春季机器学习课程笔记1:Introduction, Colab & PyTorch, HW1_第16张图片
      新的模型相比之前的模型,具有了更多的参数
      李宏毅2021春季机器学习课程笔记1:Introduction, Colab & PyTorch, HW1_第17张图片
      利用线性代数的知识,我们可以将函数用矩阵的形式表现出来李宏毅2021春季机器学习课程笔记1:Introduction, Colab & PyTorch, HW1_第18张图片
      r r r代入 s i g m o i d sigmoid sigmoid,得到下一步的数值
      李宏毅2021春季机器学习课程笔记1:Introduction, Colab & PyTorch, HW1_第19张图片
      李宏毅2021春季机器学习课程笔记1:Introduction, Colab & PyTorch, HW1_第20张图片
      最后,我们就得到了模型的结构,以及相关的未知参数
      李宏毅2021春季机器学习课程笔记1:Introduction, Colab & PyTorch, HW1_第21张图片
      对于大多数的网络,我们也会使用 R u L U RuLU RuLU来代替 S i g m o i d Sigmoid Sigmoid作为激活函数李宏毅2021春季机器学习课程笔记1:Introduction, Colab & PyTorch, HW1_第22张图片
      而如果将一层神经网络的输出再作为神经网络的输入代入,那么就构成了多层的神经网络,即深度学习李宏毅2021春季机器学习课程笔记1:Introduction, Colab & PyTorch, HW1_第23张图片
      在实际的运行过程中,不会一次运行所有数据,而会用batch:将整个数据分成很多batch,每次运行一个batch,update一次参数;将所有batch运行完一次,是为一个epoch。
      batch size也是一个需要设置的超参。
      李宏毅2021春季机器学习课程笔记1:Introduction, Colab & PyTorch, HW1_第24张图片

2. Colab使用与上传结果

Google Colab,全名Colaboratory,是由谷歌提供的免费的云平台,可以使用keras、tensorflow等框架进行深度学习。最近Colab平台已经将K80 GPU更换成Tesla T4 GPU,提供了更强的算力,可以完美“薅谷歌的羊毛”。对于刚入门机器学习或深度学习的用户,这个平台是不二之选。Colab网页链接放在这里

  1. 首先,使用这个平台是需要科学上网的,所以如果无法科学上网的同学可以在本地使用jupyter或者pycharm等方法做
  2. 使用这个平台需要有一个google账号,登入后界面如下
    李宏毅2021春季机器学习课程笔记1:Introduction, Colab & PyTorch, HW1_第25张图片
    在文件这里可以选择文件,以及上传到云端、Github,下载到本地等操作李宏毅2021春季机器学习课程笔记1:Introduction, Colab & PyTorch, HW1_第26张图片
    在这里选择连接服务器后,可以使用GPU/TPU能够提升训练网络的速度,在菜单栏点击修改-笔记本设置即可改变硬件配置,一般选择GPU模式。李宏毅2021春季机器学习课程笔记1:Introduction, Colab & PyTorch, HW1_第27张图片
    李宏毅2021春季机器学习课程笔记1:Introduction, Colab & PyTorch, HW1_第28张图片
  3. 在主界面新建代码块输入如下指令便可查询显卡信息
!nvidia-smi
  1. 导入数据有三种办法:
    - 直接上传文件
    - 上传到Google Drive并导入
    - 从github下载
    第一种方法对于较大的文件,很容易出现断开连接,上传失败的情况。
    一般建议用第二种方法,使用如下代码挂载Google Drive读取数据,这样不会存在数据丢失的情况。
    代码运行后在下方会出现链接,点击链接登录会出现验证码,复制粘贴到方框内便能在文件目录下挂载Google Drive文件夹,读取数据。
from google.colab import drive
drive.mount('/content/gdrive')
!ls

优点:白嫖、对买不起GPU的学生党来说是重大福音、显卡对比前一代K80有较大提升
缺点:连接不稳定,断开就重跑GG,如果想要在CV/NLP领域做科研发好的论文显然性能是不够的,建议配好的服务器或者到极客云/阿里云/腾讯云租界云服务器。

常用命令行

ls : List all files in the current directory
ls -l : List all files in the current directory with more detail
pwd : Output the working directory
mkdir : Create a directory named
cd : Move to directory named
gdown : Download files from google drive
wget : Download files from the internet
python <python_file> : Executes a python file

3. Pytorch

参考文档Deep Learning with PyTorch: A 60 Minute Blitz

4. HW1

代码已上传Github:菜鸡初学者的机器学习

你可能感兴趣的:(机器学习,机器学习,pytorch,人工智能,深度学习)