深度学习方法求解偏微分方程知识基础(1)—— 函数拟合
神经网络曲线拟合
123import torchimport torch.nn as nnfrom torch.utils.data import Dataset, DataLoader
123456789101112131415class Data(Dataset): def __init__(self, x, y): super(Data, self).__init__() self.x = x self.y = y def __len__(self): return len(self.x) def __getitem__(self, index): xi = self.x[index] yi = self.y[index] xi = torch.unsqueeze(xi, 0) yi = torch.unsqueeze(yi, 0) return xi, yi
1234567891011121314class NN(nn. ...
pytorch——自定义激活函数
自定义激活函数(自定义反向传播方式)
1%reset -f
继承torch.autograd.Function类
123from torch.autograd import Functionimport torchimport torch.nn as nn
实现forward和backward
激活函数为Switch函数:
$$f(x) = x \cdot sigmoid(\beta x)$$
导数:
$$\cfrac{\partial f}{\partial x} = sigmoid(x) + \beta x \cdot sigmoid(x) [1 - sigmoid(x)]$$
1234567891011121314class Switch(Function): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) @staticmethod def forward(ctx, inputs): ctx.save_for_backward(in ...
pytorch——制作和包装数据集
1%reset -f
pytorch制作和包装数据集
12import torchfrom matplotlib import pyplot as plt
1234x = torch.linspace(-torch.pi, torch.pi, steps=1000)y = torch.sin(x) + torch.randn_like(x) * 0.3plt.scatter(x.numpy(), y.numpy(), s=5)print("x_shape:{}, y_shape:{}".format(x.shape, y.shape))
x_shape:torch.Size([1000]), y_shape:torch.Size([1000])
继承Dataset类,包装成Dataset类型的数据
1234567891011121314151617from torch.utils.data import Datasetclass MyDataset(Dataset): def __init__(self, x, y) ...
深度学习杂记00
机器学习流程:
数据获取
特征工程 --> 手工提取 / 特征学习(深度学习)
数据特征决定了模型的上限
预处理和特征提取是最核心的
算法和参数选择决定了如何逼近这个上限
建立模型
评估与应用
深度学习在数据规模大的任务上效果才好
有时使用数据增强来满足数据量问题
机器学习常规套路
收集数据并给定标签
训练一个分类器
测试、评估
神经网络基础
损失函数 = 数据损失+正则化惩罚项(避免过拟合)
softmax回归:将输出转化成概率
反向传播:“图”+链式求导法则
“图”节点的反向传播直观
加法门单元:均分
MAX门单元:给最大的
乘法门单元:“互换”
神经网络基本架构
层次结构
神经元
全连接
非线性(激活函数:Sigmoid, ReLU, Tanh)
数据预处理
常见标准化
原点中心化:减均值
放缩:除以标准差
网络参数初始化
一般使用随机策略初始化
DROP-OUT 舍去部分神经元以避免过拟合
卷积神经网络基础
CNN基础架构
输入层
卷积层
滑动窗口不长
卷积核尺寸
边缘填充
卷积核个数
“激 ...
深度学习杂记01
节省内存的方法
对某元素的算数操作可以直接在原内存上修改,但实现这种操作的前提是,该元素在内存中只被引用一次。
简单的逻辑上的计算操作,会导致内存地址的变化,比如,如下代码中的x = x + y,x的内存地址会发生变化:
123456import torchx = torch.randn(3)y = 2print(id(x))x = x + yprint(id(x))
输出:
1223476730295202347679960912
而x += y则不会改变x的内存地址:
12345x = torch.randn(3)y = 2print(id(x))x = x + yprint(id(x))
输出:
1223476730295202347673029520
注意:这种方法只适用于不需要求导的数据,即required_grad=False的数据。
浅拷贝与深拷贝
即torch clone 与 直接赋值 的区别。直接赋值是浅拷贝,clone是深拷贝;浅拷贝变化会影响原始数据,深拷贝不会。
123456A = torch.randn(3, 3)B = A.clone()print( ...
机器学习基础(6)——支持向量机
支持向量机
硬间隔支持向量机
支持向量机最简单的情况是线性可分支持向量机,或硬间隔支持向量机
构建它的条件是训练数据线性可分
函数间隔与几何间隔
函数间隔:$label(w^Tx+b)\ or\ y_i(w^Tx+b)$
几何间隔:$r=\frac{label(w^Tx+b)}{||w||_2}$,当数据被正确分类时,几何间隔就是点到超平面的距离
学习策略是 最大间隔法。可以表示为凸二次规划问题,其原始最优化问题为
$$ \min_{w, b} \frac{1}{2}|w|^{2} \quad \\
s.t. \quad y_{i}\left(w \cdot x_{i}+b\right)-1 \geqslant 0, \quad i=1,2, \cdots, N $$
应用拉格朗日对偶性,求解对偶问题得到原始问题的最优解
二次规划问题的对偶问题是
$$\min L(w,b,\alpha) = \frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} ...
机器学习基础(5)——逻辑斯谛回归
逻辑斯谛回归与最大熵模型
逻辑斯谛回归模型
逻辑斯谛分布
X服从逻辑斯谛分布是指X具有下列分布函数和密度函数
$F(x)=P(X \le x)=\cfrac{1}{1+e^{-(x-\mu)/\gamma}}$
$f(x)=F’(x)=\cfrac{e^{-(x-\mu)/\gamma}}{\gamma(1+e^{-(x-\mu)/\gamma})^2}$
二项罗辑斯谛回归模型
是如下的条件概率分布:
$P(Y=1 | x)=\cfrac{\exp(w \cdot x + b)}{1+\exp(w \cdot x + b)}$
$P(Y=0 | x)=\cfrac{1}{1 + \exp(w \cdot x + b)}$
模型特点
一个事件的几率是指该事件发生的概率与不发生概率的比值
则二项罗辑斯谛回归的对数几率函数是:
$log\cfrac{P(Y=1|x)}{1-P(Y=1|x)}=w \cdot x$
模型参数估计
应用极大似然估计法估计模型参数:
设$P(Y=1 | x)=\pi (x)$, $P(Y=0 | x)=1-\pi (x)$ ...
机器学习基础(4)——决策树
决策树
由结点和有向边组成
结点有两种类型:
内部结点(表示一个特征或属性)
和叶结点(表示一个类)
决策树可视作是一个if-then规则的集合
路径上内部结点特征对应规则的条件
叶结点对应规则的结论
决策树路径互斥且完备
决策树的一条路径对应特征空间划分的一个单元,决策树所表示的条件概率分布由各个单元给定条件下类的条件概率分布组成
决策树学习本质上是从训练数据集中归纳出一组分类规则
步骤:特征选择——决策树的生成——决策树的修剪
决策树的生成对应于模型的局部选择,只考虑局部最优
决策树的剪枝对应于模型的全局选择,考虑全局最优
特征选择
信息熵
有限值离散随机变量X的熵定义为:
$H(X) = -\sum\limits^n_{i=1}p_i\log p_i$
$\log$通常以e或2为底
也可记为$H(p)$
条件熵
$H(Y | X)$ : 已知随机变量X的条件下,随机变量Y的不确定性
$H(Y|X)=\sum\limits^n_{i=1}p_iH(Y | X = x_i),\quad p_i = P(X=x_i),\text{ }i=1,2 ...
机器学习基础(3)——朴素贝叶斯
朴素贝叶斯法
输入空间:$\boldsymbol{x} \subseteq \boldsymbol{R}^n$
输出空间:$\mathcal{y}={c_1, c_2, …, c_K}$
输入为特征向量$x \in \boldsymbol{x}$,输出为类标记$y \in \mathcal{y}$;X是输入空间上的随机向量,Y是输出空间上的随机向量,$P(X,Y)$是X和Y的联合概率分布
训练数据集$T={(x_1, y_1), (x_2, y_2), …, (x_N, y_N)}$由$P(X,Y)$独立同分布产生
朴素贝叶斯对条件概率分布作了条件独立性假设:
$$\begin{aligned} & P(X=x | Y=c_k) \\= & P(X^{(1)}=x^{(1)},…, X^{(n)}=x^{(n)} | Y=c_k) \\= & \prod\limits^n_{j=1}P(X^{(j)}=x^{(j)} | Y=c_k)\end{aligned}$$
贝叶斯定理:
$$P(Y=c_k | X=x) = \cfrac{P(X= ...
机器学习基础(2)——K近邻
K近邻法
给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最近邻的K个实例,K个实例多数属于某类,则把该实例分入某类。
模型
每个训练实例点,距离该点比其他点更近的所有点构成的区域称为一个单元
所有实例点的单元构成对特征空间的一个划分
将所有实例的类作为各实例点对应单元的类标记
距离度量
是两个实例点相似程度的反映
$L_p距离$
对$n$维实数空间$\boldsymbol{R}^N$,$x_i, x_j \in \mathcal{X}, x_i = (x_i^{(1)},x_i^{(2)},…,x_i^{(n)})^T, x_j = (x_j^{(1)},x_j^{(2)},…,x_j^{(n)})^T$
$L_p距离$定义为:
$$L_p(x_i, x_j)=\left( \sum\limits_{I=1}^N |x_i^{(I)} - x_j^{(I)}|^p \right)^{\frac{1}{p}} , \quad p \ge 1$$
$p=2$时是欧氏距离;$p=1$时是曼哈顿距离;
$p = \infty$时是各坐标距离最大值,即$L_{\inf ...