PyTorch:损失函数
均方误差MSE
MSE=1N∑i=1N(xi−yi)2MSE=\frac{1}{N}\sum_{i=1}^{N}(x_i-y_i)^2
MSE=N1i=1∑N(xi−yi)2
函数原型
1class torch.nn.MSELoss(size_average=None, reduce=None, reduction='mean')
属性说明
reduction
= ‘none’:no reduction will be applied.下面的实例中,在loss1中是按照原始维度输出,即对应位置的元素相减然后求平方
= ‘mean’(默认):the sum of the output will be divided by the number of elements in the output.
= ‘sum’:the output will be summed.
Note:
size_average and reduce are in the process of being deprecated, and in the meantime, sp ...
PyTorch:优化器
随机梯度下降SGD
每次更新的时候使用一个样本进行梯度下降,所谓的随机二字,就是说我们可以随机用一个样本来表示所有的样本,来调整超参数。
12import torch.optim as optimoptimizer = optim.SGD(model.parameters(), lr = 0.01, momentum=0.9)
momentum
如图所示,红色为SGD+Momentum。黑色为SGD。可以看到黑色为典型Hessian矩阵病态的情况,相当于大幅度的徘徊着向最低点前进。
由于动量积攒了历史的梯度,如点P前一刻的梯度与当前的梯度方向几乎相反。因此原本在P点原本要大幅徘徊的梯度,主要受到前一时刻的影响,而导致在当前时刻的梯度幅度减小。
直观上讲就是,要是当前时刻的梯度与历史时刻梯度方向相似,这种趋势在当前时刻则会加强;要是不同,则当前时刻的梯度方向减弱。
梯度更新公式变化如下:VtV_tVt可以想象成“方向速度”,与上一次的更新有关。如果上一次梯度与此次方向相同,则∣Vt∣|V_t|∣Vt∣会越来越大,WWW的更新也越开越快;反之∣Vt∣|V_t|∣Vt∣变小, ...
PyTorch:数据集/数据处理
torchvision.transforms.Compose
PyTorch 的 torchvision 库中的一个类,用于将一系列图像变换操作组合在一起。通过将多个图像变换按顺序应用,可以方便地对数据集进行预处理和增强。
原型
1class torchvision.transforms.Compose(transforms)
属性说明
transforms:包含多个变换操作的列表。这些变换操作会按照提供的顺序依次应用到图像上。
主要方法
实例
123456789101112131415161718from torchvision import transformsfrom PIL import Image# 定义一系列变换操作transform = transforms.Compose([ transforms.Resize((128, 128)), # 调整图像大小 transforms.RandomHorizontalFlip(), # 随机水平翻转 transforms.ToTensor(), # 转换为张量 transforms.Normal ...
torch.nn Tutorial
torch.nn用法
nn.Linear
函数原型
123class nn.Linear(in_features, out_features, bias = True)
参数含义
in_features:输入张量的长度
out_features:输出张量的长度
bias:是否包含偏置量
原理
Yn×o=Xn×iWi×o+bY_{n×o}=X_{n×i}W_{i×o}+b
Yn×o=Xn×iWi×o+b
WWW为模型要学习的参数,bbb为偏置向量,nnn为输出向量的行数(例如,你想一次输入10个样本,即 batch_sizebatch\_sizebatch_size 为10,则nnn=10),iii为输入神经元的个数(例如,输入的样本特征数为5,则iii=5),ooo为输出神经元的个数。
实例
假设我们的一次输入三个样本A,B,C(即batch_size为3),每个样本的特征数量为5:
123A: [0.1,0.2,0.3,0.3,0.3]B: [0.4,0.5,0.6,0.6,0.6]C: [0.7,0 ...
Review of Linear Algebra
计算非线性函数的 Hessian 矩阵
现有函数 f(w)=w12+2w22+3w32f(w)=w_1^2+2w_2^2+3w_3^2f(w)=w12+2w22+3w32,其中 w=[w1,w2,w3]Tw=[w_1,w_2,w_3]^Tw=[w1,w2,w3]T。
计算一阶导数(梯度)
首先对每个变量 wiw_iwi 求一阶偏导数:
∂f∂w1=2w1∂f∂w2=4w2∂f∂w3=6w3\frac{\partial f}{\partial w_1}=2w_1 \\
\frac{\partial f}{\partial w_2}=4w_2 \\
\frac{\partial f}{\partial w_3}=6w_3
∂w1∂f=2w1∂w2∂f=4w2∂w3∂f=6w3
因此,梯度向量 ∇f(w)=(w21,4w2,6w3)T\nabla f(w) = (w2_1,4w_2,6w_3)^T∇f(w)=(w21,4w2,6w3)T 。
计算二阶导数: Hessian 矩阵
矩阵元素 HijH_{ij}Hij 是 fff 对 wiw_iwi ...
Review of Advanced Mathematics
泰勒定理
对于一般的函数,泰勒公式的系数的选择依赖于函数在一点的各阶导数值。
f(a+h)=f(a)+f‘(a)h+o(h)f(a+h) = f(a) + f^`(a)h +o(h)
f(a+h)=f(a)+f‘(a)h+o(h)
其中 o(h)o(h)o(h) 是比 hhh 高阶的无穷小。也即 f(a+h)≈f(a)+f‘(a)hf(a+h) \approx f(a) + f^`(a)hf(a+h)≈f(a)+f‘(a)h 。
f(x)≈f(a)+f‘(a)(x−a)f(x) \approx f(a) + f^`(a)(x-a)f(x)≈f(a)+f‘(a)(x−a) 。
综上,可以将定理描述为:
设 nnn 是一个正整数,如果定义在一个包含 aaa 的区间上的函数 fff 在 aaa 点处 n+1n+1n+1 阶可导,那么对于这个区间上的任意 xxx ,都有:
f(x)=f(a)+f‘(a)1!(x−a)+f(2)(a)2!(x−a)2+⋯+f(n)(a)n!(x−a)n+Rn(x)f(x) = f(a) + \frac{f^`(a)}{1!}(x-a) + \frac{f^{( ...
Principles of Large-Scale Machine Learning [Lecture 4]
Lecture 4
Learning with Gradient Descent
回顾:经验风险最小化与梯度下降
为每个预测器分配一个ddd维的参数向量,也即每一个ddd维参数向量对应一个预测器。并将经验风险最小化视作一个优化问题:
minimize:R(hw)=1n∑i=1nL(hw(xi),yi) over w∈Rd\text{minimize}:R(h_w)=\frac{1}{n}\sum_{i=1}^nL(h_w(x_i),y_i) \; \text{over} \; w \in \mathbb{R}^d
minimize:R(hw)=n1i=1∑nL(hw(xi),yi)overw∈Rd
通常,我们将经验风险视作关于参数www的函数:
f(w)=R(hw)=1n∑i=1nL(hw(xi),yi)=1n∑i=1nfi(w)f(w)=R(h_w)=\frac{1}{n}\sum_{i=1}^nL(h_w(x_i),y_i)=\frac{1}{n}\sum_{i=1}^nf_i(w)
f(w)=R(hw)=n1i=1∑nL(hw(xi),yi)=n1 ...
CIFAR10 Tutorial
123# For tips on running notebooks in Google Colab, see# https://pytorch.org/tutorials/beginner/colab%matplotlib inline
Training a Classifier
This is it. You have seen how to define neural networks, compute loss and make updates to the weights of the network.
已经了解了如何定义神经网络、计算损失以及更新网络权重。
Now you might be thinking, What about data?如何处理不同的数据类型
Generally, when you have to deal with image, text, audio or video data, you can use standard python packages that load data into a numpy array. Then you can ...
Principles of Large-Scale Machine Learning [Lecture 3]
Lecture 3
Exponential Concentration Inequalities and ERM
回顾:切比雪夫不等式
0−10-10−1经验风险:
R(h)=1n∑i=1nL(h(xi),yi)=1n∑i=1nδ(h(xi),yi)δ(y^,y)=1, if y^=y and 0 otherwiseR(h)=\frac{1}{n}\sum_{i=1}^{n}L(h(x_i),y_i)=\frac{1}{n}\sum_{i=1}^n\delta(h(x_i),y_i)\\
\delta(\hat{y},y)=1,\,\text{if}\,\,\,\hat{y}=y\,\,\text{and}\,\,\text{0}\,\,\text{otherwise}
R(h)=n1i=1∑nL(h(xi),yi)=n1i=1∑nδ(h(xi),yi)δ(y^,y)=1,ify^=yand0otherwise
ZZZ:等概率从所有样本中抽取其损失,进行KKK次彼此独立的随机抽取得到一组随机变量ZZZ,即Z1,Z2,…,ZKZ_1,Z_2,\dot ...
Review of Statistics
子采样的数学期望、方差推导
假设ZZZ的期望和方差分别为μ\muμ、σ2\sigma^2σ2,由于Z1,Z2,…,ZKZ_1,Z_2,\dots,Z_KZ1,Z2,…,ZK是独立同分布的随机变量,每个ZkZ_kZk的期望和方差也是μ\muμ、σ2\sigma^2σ2。SKS_KSK的定义如下:
SK=1K∑k=1KZkS_K = \frac{1}{K} \sum_{k=1}^K Z_k
SK=K1k=1∑KZk
E(SK)\textbf{E}(S_K)E(SK)
E(SK)=E(1K∑k=1KZk)=1K∑k=1KE(Zk)=1K∑k=1Kμ=μ\textbf{E}(S_K) = \textbf{E}(\frac{1}{K} \sum_{k=1}^K Z_k) = \frac{1}{K}\sum_{k=1}^K\textbf{E}(Z_k)=\frac{1}{K}\sum_{k=1}^K\mu=\mu
E(SK)=E(K1k=1∑KZk)=K1k=1∑KE(Zk)=K1k=1∑Kμ=μ
Var(SK)\textbf{Var}(S_K)Var ...