首页 > 其他分享 >3.1 线性回归

3.1 线性回归

时间:2023-05-26 11:56:45浏览次数:36  
标签:right frac 回归 boldsymbol XW 3.1 线性 self left

3.1.1 线性回归的基本元素

整节理论知识,详见书本。

3.1.2 向量加速化

%matplotlib inline
import math
import time
import numpy as np
import torch
from d2l import torch as d2l
# 以后常用的计时器

class Timer:  #@save
    """记录多次运行时间"""
    def __init__(self):
        self.times = []
        self.start()

    def start(self):
        """启动计时器"""
        self.tik = time.time()

    def stop(self):
        """停止计时器并将时间记录在列表中"""
        self.times.append(time.time() - self.tik)
        return self.times[-1]

    def avg(self):
        """返回平均时间"""
        return sum(self.times) / len(self.times)

    def sum(self):
        """返回时间总和"""
        return sum(self.times)

    def cumsum(self):
        """返回累计时间"""
        return np.array(self.times).cumsum().tolist()

在训练模型时为了实现同时处理整个小批量样本需要对计算进行向量化,从而利用线性代数库,而不是使用开销巨大的 for 循环。

以下比较两种方法的时间开销:第一种方法用 for 循环逐个执行加法,第二种方法使用重载的 + 运算符(向量加法)。

n = 100000
a = torch.ones(n)
b = torch.ones(n)
c = torch.zeros(n)
timer = Timer()
for i in range(n):
    c[i] = a[i] + b[i]
f'{timer.stop():.5f} sec'
'1.73559 sec'
timer.start()
d = a + b
f'{timer.stop():.5f} sec'  # 按书上一万位的话向耗时甚至显示为0,向量化带来数量级级别的明显加速。
'0.00100 sec'

3.1.3 正态分布与平方损失

正态分布(normal distribution)概率密度函数:

\[p(x)=\frac{1}{\sqrt{2\pi\sigma^2}}\exp{\left(-\frac{1}{2\sigma^2}(x-\eta)^2\right)} \]

def normal(X, mu, sigma):  # 计算正态分布
    p = 1 / math.sqrt(2 * math.pi * sigma**2)
    return p * np.exp(-0.5 / sigma**2 * (X - mu)**2)

正态分布改变均值会产生沿 X 轴的偏移,增加方差会分散分布并降低峰值。

x = np.arange(-7, 7, 0.01)

params = [(0, 1), (0, 2), (3, 1)]  # 均值和标准差对
d2l.plot(x, [normal(x, mu, sigma) for mu,sigma in params],
         xlabel='x', ylabel='p(x)', figsize=(4.5, 2.5),
         legend=[f'mean {mu}, std {sigma}' for mu,sigma in params])


image

在高斯噪声(正态分布)的假设下,最小化均方误差等价与对线性模型的极大似然估计。(具体推到详见课本)

3.1.4 从线性回归到深度网络

整节理论知识,详见书本。

练习

(1)假设我们有一些数据 \(\boldsymbol{\boldsymbol{\boldsymbol{x}}}_1,x_2,\dots,x_n\in\mathbb{R}\)。我们的目标是找到一个常数 \(b\),使得最小化 \(\sum_i(x_i-b)^2\)。

a. 找到最优值的解析解。

b. 这个问题及其解与正态分布有什么关系?

a. 令 \(l(b)=\sum^n_{i=0}(x_i-b)^2\),对 \(b\) 求导得:

\[\frac{\mathrm{d}l(b)}{\mathrm{d}b}=-2\sum^n_{i=0}(x_i-b)=-2\sum^n_{i=0}x_i+2nb \]

令导数等于 0,则:

\[2nb=2\sum^n_{i=0}x_i \]

得 \(b\) 的解析解为:

\[b=\frac{1}{n}\sum^n_{i=0}x_i \]

b. 此问题实际为最小化均方误差,在正态分布中其等价于对线性模型的极大似然估计,即若 \(x_1,x_2,\dots,x_n\in N(\mu,\sigma^2)\) 则 \(b=\sigma\)。


(2)推导出使用平方误差的线性回归优化问题的解析解。为了简化问题,可以忽略偏置 \(b\)(我们可以通过向 \(\boldsymbol{X}\) 添加所有值为 1 的一列来做到这一点)。

a. 用矩阵和向量表示法写出优化问题(将所有数据视为单个矩阵,将所有目标值视为单个向量)。

b. 计算损失对 \(\boldsymbol{w}\) 的梯度。

c. 通过将梯度设为 0 并求解矩阵方程来找到解析解。

d. 什么时候可能比使用随机梯度下降更好?这种方法何时会失效?

a. 令 \(\hat{\boldsymbol{y}} = \boldsymbol{XW}\),则

\[L(\boldsymbol{X},\boldsymbol{W})=\frac{1}{2}||\boldsymbol{y}-\hat{\boldsymbol{y}}||_2=\frac{1}{2}(\boldsymbol{y}-\boldsymbol{XW})^T(\boldsymbol{y}-\boldsymbol{XW}) \]

b.

\[\begin{align} L(\boldsymbol{X},\boldsymbol{W})&=\frac{1}{2}(\boldsymbol{y}-\boldsymbol{XW})^T(\boldsymbol{y}-\boldsymbol{XW})\\ &=\frac{1}{2}(\boldsymbol{y}^T-\boldsymbol{W}^T\boldsymbol{X}^T)(\boldsymbol{y}-\boldsymbol{XW})\\ &=\frac{1}{2}(\boldsymbol{y}^T\boldsymbol{y}-\boldsymbol{y}^T\boldsymbol{XW}-\boldsymbol{W}^T\boldsymbol{X}^T\boldsymbol{y}+\boldsymbol{W}^T\boldsymbol{X}^T\boldsymbol{XW})\\ &=\frac{1}{2}(\boldsymbol{y}^T\boldsymbol{y}-2Y^T\boldsymbol{XW}+\boldsymbol{W}^T\boldsymbol{X}^T\boldsymbol{XW}) \end{align} \]

则求导得:

\[\frac{\partial L(\boldsymbol{X},\boldsymbol{W})}{\partial \boldsymbol{W}}=-\boldsymbol{X}^T\boldsymbol{y}+\boldsymbol{X}^T\boldsymbol{XW} \]

c. 令梯度等于 0 得:

\[\boldsymbol{X}^T\boldsymbol{X}W=X^T\boldsymbol{y} \]

若 \(\boldsymbol{X}^T\boldsymbol{X}\) 可逆则:

\[\boldsymbol{W}=(\boldsymbol{X}^T\boldsymbol{X})^{-1}X^T\boldsymbol{y} \]

d. 由上式可知,若 \(\boldsymbol{X}^T\boldsymbol{X}\) 不可逆则解析解方法失效。


(3)假定控制附加噪声 \(\epsilon\) 的噪声模型呈指数分布,也就是 \(p(\epsilon)=\frac{1}{2}\exp{\left(-|\epsilon|\right)}\)。

a. 写出模型 \(-\log{P(\boldsymbol{y}|\boldsymbol{X})}\) 下数据的负对数似然。

b. 请试着写出解析解。

c. 提出一种随机梯度下降算法来解决这个问题,哪里可能出错?(提示:当我们不断更新参数时,在驻点附近会发生什么情况)请尝试解决这个问题。

a. 令 \(y=\boldsymbol{w}^T\boldsymbol{x}+b+\epsilon\)

噪声模型呈指数分布则:

\[P(y|\boldsymbol{x})=\frac{1}{2}\exp{\left(-\left|y-\boldsymbol{w}^T\boldsymbol{x}-b\right|\right)} \]

\[\begin{align} P\left(\boldsymbol{y}|\boldsymbol{X}\right)&=\prod^n_{i=1}P\left(y^{(i)}|\boldsymbol{x}^{(i)}\right)\\ &=\prod^n_{i=1}\frac{1}{2}\exp{\left(-\left|y^{(i)}-\boldsymbol{w}^T\boldsymbol{x}^{(i)}-b\right|\right)}\\ &=(\frac{1}{2})^n\exp{\left(-\sum^n_{i=1}\left|y^{(i)}-\boldsymbol{w}^T\boldsymbol{x}^{(i)}-b\right|\right)} \end{align} \]

\[-\log{P\left(\boldsymbol{y}|\boldsymbol{X}\right)}=n\log{2}+\sum^n_{i=1}\left|y^{(i)}-\boldsymbol{w}^T\boldsymbol{x}^{(i)}-b\right| \]

b. 有绝对值,应该是不可导得

c. 取平方就可导了

标签:right,frac,回归,boldsymbol,XW,3.1,线性,self,left
From: https://www.cnblogs.com/AncilunKiang/p/17434358.html

相关文章

  • 3.2 线性回归从零开始实现
    %matplotlibinlineimportrandomimporttorchfromd2limporttorchasd2l3.2.1生成数据集为了简单起见,使用易于可视化的低维数据。使用线性模型\(\boldsymbol{y}=\boldsymbol{Xw}+b+\epsilon\)生成数据集及其标签,其中合成的数据集是一个矩阵\(\boldsymbol{X}\in\R^{1......
  • Flutter 3.1亮点功能介绍
    Flutter是一款强大的跨端开发框架,可以帮助开发者构建高性能、美观、灵活的应用程序,从而实现跨平台开发和部署。小程序容器技术与跨端框架结合使用,为开发者提供一站式的小程序开发和发布服务,帮助他们更加轻松和高效地构建和部署跨平台应用程序,这样开发者可以节省大量的时间和精力,并......
  • 计量经济学笔记-2一般回归分析和模型设定
    2.一般回归分析和模型设定问题1:辨别相关性是不是因果关系统计关系:预测关系经济关系:因果关系问题2:一般归回分析和线性回归模型问题3:线性回归模型的系数coefficients的经济意义回归分析是研究变量Y和变量X之间关系的常用工具。用于考察X对Y的影响用X的信息预测......
  • 3.10不重复三位数
    1.问题描述用1234这四个数能组成多少个互不相同且无重复的三位数。2.代码#include<stdio.h>#include<stdlib.h>intmain(){ intn; inti,j,k; for(i=1;i<5;i++) { for(j=1;j<5;j++) { for(k=1;k<5;k++) { if(i!=j&&i!=k&&j!=k) { printf(&quo......
  • Problem E: STL——灵活的线性表
    HomeWebBoardProblemSetStandingStatusStatisticsProblemE:STL——灵活的线性表TimeLimit:1Sec  MemoryLimit:128MBSubmit:5192  Solved:2169[Submit][Status][WebBoard]Description数组和链表是我们熟知的两种线性结构,但是它们不够......
  • jmeter3.1(jdk1.8)安装包及安装教程
    jmeter3.1版本安装包:链接:https://pan.baidu.com/s/1QLUHSIavbCd-YKFH4kisnw提取码:04tf一、检查电脑是否安装jdk且jdk版本必须大于或等于1.7.0检查方法:cmd中输入java-version,出现如下信息,即已经安装好jdk如未安装,参考以下步骤进行安装:jdk1.8安装包:链接:https://pan.baidu.com/s......
  • 3.6 Softmax回归的从零开始实现
    我们首先导入相关的包,并读入训练和测试所用的数据集图片的DataLoader: 这里面d2l.load_data_fashion_mnist(batch_size)读入训练和测试所用的图像数据集的DataLoader。 1.初始化模型参数Softmax回归模型参数包括W、b。假设输入特征数量为num_inputs,输出的数量(类别的数量)为n......
  • 使用 TensorFlow 自动微分和神经网络功能估算线性回归的参数(Estimate parameters for
    大多数的深度学习框架至少都会具备以下功能:(1)张量运算(2)自动微分(3)神经网络及各种神经层TensorFlow框架亦是如此。在《深度学习全书公式+推导+代码+TensorFlow全程案例》——洪锦魁主编清华大学出版社ISBN978-7-302-61030-4这本书第3章《TensorFlow架构与主要功能》这一......
  • 分析| Flutter 3.10版本有哪些变化?
    Flutter是Google推出的一款用于构建高性能、高保真度移动应用程序、Web和桌面应用程序的开源UI工具包。Flutter使用自己的渲染引擎绘制UI,为用户提供更快的性能和更好的体验。Flutter还提供了丰富的构建工具、库和插件,使开发人员能够更快地构建应用程序。今天就为大家带来Flutter3.......
  • Appengine部署springMVC3.1
    参考:[url]http://sikeh.iteye.com/blog/364043[/url]获得springMVC的方法:[url]http://panyongzheng.iteye.com/blog/1759912[/url][b]1.mvnarchetype:create-DgroupId=com.pandy-DartifactId=study[/b][b]2.cdstudy[/b]需要做一些另外的事情,然......