线性回归

台湾对于行和列的定义,与内地的定义(横为行,竖为列)是反的。

1 Like

“在高斯噪声的假设下,最小化均方误差等价于对线性模型的极大似然估计。”
没有理解这个证明过程对于工作的意义是什么?通过将最小化均方误差问题与极大似然估计问题等效有什么意义?

3.1.9 → 3.1.10 推导过程

对于3.1.13是怎么堆导的呢?
公式右边是噪声的概率密度函数
公式左边是已知y的情况下,求x,为什么等于右边呢?

求解析解可以利用符号函数去掉绝对值,再求导

噪声e(我用e表示噪声)服从正态分布,y = xw+b+e,那么e=y-xw-b也服从正态分布N~(0,sigma),代入正态分布公式里面就有了

第一题:题目求的是x = b + e, e服从正态分布下,b的极大似然估计。换句话说,题目假设了x是均值为b的正态分布

我在初次阅读时同样感到困惑,因为这与前文$y = w^Tx+b$中“向量默认为列向量”的表述相悖。当向量默认为列向量时,与您"行数代表样本的特征数量,列数代表样本数"的表述相吻合。
而当我阅读矩阵情况下的公式后,会发现y的计算公式发生了变化。此时$y=Xw+b$,X与w互换了位置,且w不再转置.在这一公式的前提下,文中的表述实质上是正确的。而如果将计算公式改为$y=w^TX+b$,则与您的表述重新吻合。

由x经过线性回归模型预测到的y的最大可能是噪声为高斯噪声的模型得到的预测结果。个人感觉似然翻译为可能性更好。

for epoch in range(num_epochs):
    for X, y in data_iter(batch_size, features, labels):
        l = loss(net(X, w, b), y)  # X和y的小批量损失
        # 因为l形状是(batch_size,1),而不是一个标量。l中的所有元素被加到一起,
        # 并以此计算关于[w,b]的梯度
        l.sum().backward()
        sgd([w, b], lr, batch_size)  # 使用参数的梯度更新参数
    with torch.no_grad():
        train_l = loss(net(features, w, b), labels)
        print(f'epoch {epoch + 1}, loss {float(train_l.mean()):f}')

运行这段代码有如下报错:
RuntimeError: Trying to backward through the graph a second time (or directly access saved tensors after they have already been freed). Saved intermediate values of the graph are freed when you call .backward() or autograd.grad(). Specify retain_graph=True if you need to backward through the graph a second time or if you need to access saved tensors after calling backward.

我也添加了retain_graph=True还是同样的错误

我也觉得是
I agree with you

我觉着应该是他写错了,y=Xw+b,其中yXw分别是列向量,矩阵,列向量,后面加b利用广播机制。因此他们他们又可以表达为y=Xw+b,而b是一个列向量,每个元素为b,Xw+b=[X|b][w ;1] 这是大学线性代数中关于矩阵拆分成子矩阵的运算知识。由此可以看出,要合并矩阵,需要在 X后面插入一个b列向量,在w列向量下面加上一个标量1。这种扩充维度的方法以后将会在别的算法上频繁遇到的。

1 Like