线性回归
用来预测标签的因素称为特征
过程分为: 获取&读取数据 确定模型&模型参数 损失函数 优化算法 训练模型
绝大多数深度学习模型也是采用类似步骤
A ⊙ B A\odot B A⊙B被称为Hadamard积,其结果为元素按索引相乘
两个用张量做索引取值的函数:
torch.gather(input, dim, index)
把input内容按index进行聚合 output形状同index
torch.scatter(input, dim, index, src)
把input内容按index用src进行替换 output形状同input
取值逻辑如下
Softmax
对应之前Linear Regression的连续输出,使用softmax运算符来进行离散输出
y
^
1
,
y
^
2
,
y
^
3
=
softmax
(
o
1
,
o
2
,
o
3
)
\hat{y}_{1},\hat{y}_{2},\hat{y}_{3} = \textup{softmax}(o_{1},o_{2},o_{3})
y^1,y^2,y^3=softmax(o1,o2,o3),其中
y
^
i
=
e
x
p
(
o
i
)
∑
i
e
x
p
(
o
i
)
\hat{y}_{i}=\frac{exp(o_{i})}{\sum_{i}exp(o_{i})}
y^i=∑iexp(oi)exp(oi)
softmax将连续的样本特征转化为离散的分类类别概率分布
交叉熵用来衡量两个概率分布之间的差异
H
(
y
(
i
)
,
y
^
(
i
)
)
=
−
∑
j
=
1
q
y
j
(
i
)
log
y
^
j
(
i
)
H(y^{(i)},\hat{y}^{(i)})=-\sum_{j=1}^{q} y^{(i)}_{j}\textup{log} \hat{y}^{(i)}_{j}
H(y(i),y^(i))=−∑j=1qyj(i)logy^j(i)
交叉熵更关心预测正确的概率类别
对于个数为n的样本,基于交叉熵的损失函数为
l
(
Θ
)
=
1
n
∑
i
=
1
n
H
(
y
(
i
)
,
y
^
(
i
)
)
l(\Theta )=\frac{1}{n}\sum_{i=1}^{n}H(y^{(i)},\hat{y}^{(i)})
l(Θ)=n1∑i=1nH(y(i),y^(i))
softmax回归是一个单层的神经网络
多层感知机
常用激活函数有ReLU,sigmoid,tanh
ReLU计算少,sigmoid和tanh计算多,故在层数多时,最好有ReLU
ReLU只能在隐藏层使用
可先试ReLU,效果不好时再尝试其它的
反向传播算法的目的是最小化一个可导的损失函数
广播机制:
y_hat的形状是[n, 1]
y的形状是[n]
两者直接相减 结果是[n, n]
注意共用内存问题。即使共用内存,也不是同一个张量,因为张量还有其它属性
另有一个属性问题: