待做
- 20220326 李宏毅讲的反向传播网络 Backpropagation https://www.youtube.com/watch?v=ibJpTrp5mcE
李宏毅《深度学习》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
2022-03-26
红色框里的看完,作业1介绍Pdf已看,明天做作业1。
深度学习介绍
机器学习就是一个找一个函数,这个函数可以是
- 输入:语言 —> 输出:识别出语音内容
- 输入:图片 —> 输出:识别出图片上的东西
- 输入:围棋棋谱 —> 输出:每一步改怎么走
- ………..
但是相比数学上的解析函数,机器学习的函数要复杂得多,人很难写出来,所以通过机器来寻找这样一个函数
不同类型的机器学习函数
- 回归
- 分类
- 结构化学习strctured learning:如让机器画一张画,写一篇文章
机器如何找一个函数呢?
- 先猜测一下这个函数的数学表达式,如先猜测一个带参数的多项式函数 y = b+wx1(线性模型)
- 定义损失函数Loss
- 优化:寻找一组参数(b,w),使得Loss最小
- 方法:梯度下降Gradient Descent
- 超参数hyperparameters:需要人工设定而非机器自己学习的参数
- 什么时候停下来:
- 到达给定的参数更新次数上限
- 损失函数对参数的微分刚好为0
- 局部最小点? 全局最小点?
- 方法:梯度下降Gradient Descent
机器学习有众多函数(模型),深度学习是机器学习的一个子类。深度学习的函数是类神经网络。
很多很多层的隐藏层叠加在一起就叫深度 ——> 深度学习
工具
Colab
Colab是Google开发的一款浏览器网页应用工具,其主要功能包括:
- 在线编写运行python
- 在线使用Google提供的一块免费的GPU
- 其类似于pycharm里的 .ipynb 文件格式的富文本 notebook
Colab Tutorial https://reurl.cc/Epg3M0
Pytorch
Pytorch 是机器学习套件,
HW
HW1
作业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)
流程:
- 配置 Configurations
- 加载数据 Dataloader
- 划分数据,挑选特征
- 将数据划分为多个batches
- 建立模型,开始训练
- 测试集预测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
改成五层神经网络
nn.Linear(input_dim, 64),
nn.ReLU(),
nn.Linear(64, 32),
nn.ReLU(),
nn.Linear(32, 16),
nn.ReLU(),
nn.Linear(16, 8),
nn.ReLU(),
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