待做

李宏毅《深度学习》2022课程
https://www.bilibili.com/video/BV1Wv411h7kN?p=2&spm_id_from=pageDriver
课程主页:https://speech.ee.ntu.edu.tw/~hylee/ml/2021-spring.php

我的进度

2022-03-24
image.png
2022-03-26
红色框里的看完,作业1介绍Pdf已看,明天做作业1。
image.png

深度学习介绍

机器学习就是一个找一个函数,这个函数可以是

  • 输入:语言 —> 输出:识别出语音内容
  • 输入:图片 —> 输出:识别出图片上的东西
  • 输入:围棋棋谱 —> 输出:每一步改怎么走
  • ………..

image.png
但是相比数学上的解析函数,机器学习的函数要复杂得多,人很难写出来,所以通过机器来寻找这样一个函数

不同类型的机器学习函数

  • 回归
  • 分类
  • 结构化学习strctured learning:如让机器画一张画,写一篇文章

机器如何找一个函数呢?

  • 先猜测一下这个函数的数学表达式,如先猜测一个带参数的多项式函数 y = b+wx1(线性模型)
  • 定义损失函数Loss
  • 优化:寻找一组参数(b,w),使得Loss最小
    • 方法:梯度下降Gradient Descent
      • 超参数hyperparameters:需要人工设定而非机器自己学习的参数
      • 什么时候停下来:
        • 到达给定的参数更新次数上限
        • 损失函数对参数的微分刚好为0
        • 局部最小点? 全局最小点?

机器学习有众多函数(模型),深度学习是机器学习的一个子类。深度学习的函数是类神经网络
image.png

很多很多层的隐藏层叠加在一起就叫深度 ——> 深度学习
image.png

工具

Colab

Colab是Google开发的一款浏览器网页应用工具,其主要功能包括:

  • 在线编写运行python
  • 在线使用Google提供的一块免费的GPU
  • 其类似于pycharm里的 .ipynb 文件格式的富文本 notebook

Colab Tutorial https://reurl.cc/Epg3M0

Pytorch

Pytorch 是机器学习套件,

HW

HW1

image.png
作业notebook https://colab.research.google.com/drive/1FTcG6CE-HILnvFztEFKdauMlPKfQvm5Z#scrollTo=V57zhcTp1Xxb
在Kaggle上提交链接: https://www.kaggle.com/competitions/ml2022spring-hw1

分析和思路

数据

train_data size: 2699 x 118 (id + 37 states + 16 features x 5 days)
test_data size: 1078 x 117 (without last day’s positive rate)

原版代码

数据集:
train_data size: (2160, 118)

  • x_train (2160, 117)
  • y_train 2160

valid_data size: (539, 118)
test_data size: (1078, 117)

流程:

  1. 配置 Configurations
  2. 加载数据 Dataloader
    1. 划分数据,挑选特征
    2. 将数据划分为多个batches
  3. 建立模型,开始训练
  4. 测试集预测y

特点:
训练输入的 X 把所有特征都用上了,包括 id,病人所在洲的信息,前4天的信息(包括确诊信息),第5天的信息(不含确诊信息)
训练输入的 Y 是第5天确诊信息
用了三层神经网络 117 ->16 -> 8 -> 1

修改思路

  • 改成多层神经网络
    • 改成五层神经网络 117 -> 64 -> 32 ->16 -> 8 -> 1
  • 特征处理
    • id 这个信息明显毫无意义
    • 特征工程
      • Normalize标准化 —如果某些特征之前的范围相差很大
      • Regularization正则化 — 惩罚一些不好的特征,避免过拟合
      • 特征挑选
        • Wrapper methods,Filter methods,Filter methods

验证

Kaggles score 分越低越好

原版代码
Train loss: 1.7813, Valid loss: 2.0827
Kaggle上得分 1.83855

改成五层神经网络

  1. nn.Linear(input_dim, 64),
  2. nn.ReLU(),
  3. nn.Linear(64, 32),
  4. nn.ReLU(),
  5. nn.Linear(32, 16),
  6. nn.ReLU(),
  7. nn.Linear(16, 8),
  8. nn.ReLU(),
  9. nn.Linear(8, 1)

117 -> 64 -> 32 ->16 -> 8 -> 1
Train loss: 1.3908, Valid loss: 1.8740
Kaggle上得分 1.67519

只把第一个特征(id)删除
Train loss: 1.1760, Valid loss: 1.1368
Kaggle上得分 0.91717

五层神经网络 + 删除第一个特征(id)
Train loss: 1.0877, Valid loss: 1.0187
Kaggle上得分 1.09382

HW2

image.png

HW3

image.png

HW4

image.png

HW5

image.png

HW6

image.png

HW7

HW5

HW5