机器学习day1
李宏毅2021春机器学习课程
P1
使用代码python
辅助库,numpy(多维矩阵计算库),matplotlib(numpy的图形库)
P2
一、什么是机器学习?
机器学习是寻找一个函数的过程,这个函数可以完成我们的需求。
二、函数的种类
Progression 输出的只是一个数
Classification 输出的是分类,如YES/NO
Structured Learning 创造
三、机器怎么找这个函数?(训练)
分三步
-
写出一个多项式,猜测(domain knowledge 当前领域的经验(模型)),如y = a*x + b
a:weight 权重,乘数
b:bias 偏移,加数 -
定义一个Loss(a,b) 值体现了a和b是否好
label 正确的数值(标签)
误差e,分为MAS和MSE -
Optimization 最优化
使用Gradient Descent 梯度下降Loss方法
η:Learning rate 学习速度:参数改变的速度
hyperparameters:超参数 自己设定的(比如学习多少次)
1)先给自定义的a和b初始值
2)学习过程的函数:
3)找到最优a和b
local minima: 局部最小,有这个问题,但不是关键
global minima: 全局最小
P3
上述 y = ax + b
这是一个线性模型,比较简单,因此存在问题,称之为Model Bias
Piecewise Linear 分段线通过蓝色函数(hard sigmoid)组成:
用如下sigmoid函数来逼近上述分段函数(一种激活函数)
函数模型的变化
最终表达式
未知参数
总参数合计 θ
Loss函数则表示为 L(θ)
寻找最佳 θ*
- 取初始值 θ0
- 更新参数,方法同P2,使用微分
把所有练习数据分成很多batch(批),分组训练(批量梯度下降)
看完所有batch叫一次epoch - 得到最后的值
目前超参数:sigmoid,batch数,Learning rate
可以多次迭代,得到更多隐藏层,使得结果更好,多层感知
每一个激活函数组成一个神经元
现在成为隐藏层Hidden Layer
整个结构就是一个神经网络
现在不这么说,现在说,深度学习
但是层数过多会出现问题:
Overfitting 过拟合
课外:
P4
Tensor 张量
PyTorch和TensorFlow优缺点
# 生成张量
import torch
x = torch.tensor([[1, -1], [1, -1]])
print(x)
y = torch.zeros([3, 3])
print(y)
z = torch.ones([1,2,3])
print(z)
# 增加减少维度
print(z.shape)
z = z.squeeze(0)
print(z.shape)
z = z.unsqueeze(1)
print(z.shape)