修改主题
颀周
认真,你就赢了
content
取消修改
评论
摘要: 隐马尔可夫模型(Hidden Markov Model, HMM)是可用于标注问题的模型,描述由隐藏的马尔可夫链随机生成观测序列的过程,属于生成模型。马尔可夫链不懂的可以把本科的《概率论与数理统计》找回来看一下,并不难,就是离散状态之间的转换。下面直接定义基本概念,为后面的算法做准备。 基本概念 变 阅读全文
posted @ 2020-08-10 15:01 颀周 阅读(1238) 评论(1) 推荐(1) 编辑
摘要: 遗传算法(Genetic Algorithm, GA)是一种通用的优化算法,属于进化算法簇中一个比较实用又有名的算法。进化算法融合了自然生物进化中共有的一些行为:繁殖、变异、竞争、选择等。 基本流程 GA通过迭代来优化目标函数的参数,直到目标函数满足一定条件时结束。迭代对目标函数的连续性并无要求,也 阅读全文
posted @ 2020-07-28 23:15 颀周 阅读(1061) 评论(0) 推荐(2) 编辑
摘要: EM算法是一种迭代算法,用于含有隐变量的概率模型参数的极大似然估计。 使用EM算法的原因 首先举李航老师《统计学习方法》中的例子来说明为什么要用EM算法估计含有隐变量的概率模型参数。 假设有三枚硬币,分别记作A, B, C。这些硬币正面出现的概率分别是$\pi,p,q$。进行如下掷硬币试验:先掷硬币 阅读全文
posted @ 2020-06-21 21:05 颀周 阅读(2686) 评论(0) 推荐(1) 编辑
摘要: K均值聚类是一种无监督学习分类算法。 介绍 对于$n$个$m$维特征的样本,K均值聚类是求解最优化问题: $\displaystyle C^*=\text{arg}\min\limits_{C}\sum\limits_{l = 1}^K\sum\limits_{x\in C_l}||x-x_l||^ 阅读全文
posted @ 2020-06-10 16:10 颀周 阅读(649) 评论(0) 推荐(0) 编辑
摘要: 反向传播算法基于多元函数链式法则,以下记录多元函数链式法则的证明与反向传播算法的实例推演。 多元复合函数的求导法则(多元链式法则) 定义 如果函数$u=\varphi(t)$及$v=\psi(t)$都在点$t$可导,函数$z = f(u,v)$在对应点$(u,v)$具有连续偏导数(重点),那么复合函 阅读全文
posted @ 2020-06-06 17:19 颀周 阅读(1528) 评论(0) 推荐(0) 编辑
摘要: PCA(Principal Components Analysis)主成分分析是一个简单的机器学习算法,利用正交变换把由线性相关变量表示的观测数据转换为由少量线性无关比变量表示的数据,实现降维的同时尽量减少精度的损失,线性无关的变量称为主成分。大致流程如下: 首先对给定数据集(数据是向量)进行规范化 阅读全文
posted @ 2020-05-25 23:22 颀周 阅读(898) 评论(1) 推荐(1) 编辑
摘要: 最基本的SVM(Support Vector Machine)旨在使用一个超平面,分离线性可分的二类样本,其中正反两类分别在超平面的一侧。SVM算法则是要找出一个最优的超平面。 下面从简单到复杂介绍三种SVM形式,然后介绍一种快速优化SVM的算法,最后用SVM实现人脸识别。 线性可分SVM 优化函数 阅读全文
posted @ 2020-05-25 16:18 颀周 阅读(1893) 评论(0) 推荐(0) 编辑
摘要: 核密度估计,或Parzen窗,是非参数估计概率密度的一种。比如机器学习中还有K近邻法也是非参估计的一种,不过K近邻通常是用来判别样本类别的,就是把样本空间每个点划分为与其最接近的K个训练抽样中,占比最高的类别。 直方图 首先从直方图切入。对于随机变量$X$的一组抽样,即使$X$的值是连续的,我们也可 阅读全文
posted @ 2020-04-11 20:54 颀周 阅读(7757) 评论(8) 推荐(1) 编辑
摘要: 两个正整数的最大公约数(Greatest Common Divisor,GCD)在计算机中通常使用辗转相除法计算,最小公倍数(Least Common Multiple, LCM)可以使用GCD来计算。下面首先介绍GCD和LCM。然后介绍辗转相除法的计算形式,并证明为什么可以得出GCD。 最大公约数 阅读全文
posted @ 2022-02-21 17:50 颀周 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 遗传算法是一种通用的最优化方法,具体原理可以看:遗传算法详解与实验。下面记录在Matlab中如何使用遗传算法来做优化。 用法 调用方式如下: 1 x = ga(fun,nvars) 2 x = ga(fun,nvars,A,b) 3 x = ga(fun,nvars,A,b,Aeq,beq) 4 x 阅读全文
posted @ 2021-08-05 17:29 颀周 阅读(453) 评论(0) 推荐(0) 编辑
摘要: 要用TPU训练tensorflow模型,只能使用静态图。也就是要先通过keras的sequential或者函数式定义模型,而不能直接使用重写的Model类。例子如下,其中包含层的自定义,以及子像素卷积。需要注意的是,tensorflow的子pixel_shuffle通道顺序与pytorch不同,具体 阅读全文
posted @ 2021-06-10 22:22 颀周 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 搞科研的小伙伴总是会被期刊严苛的引用文献格式搞的很头疼。虽然常用的文献软件可以一键导出BibTex,但由于很多论文在投稿之前都会先发上Arxiv占坑,软件就很可能会把文献引出为来自Arxiv。我用的是Zotero,就有这个毛病。 因此,如果是IEEE的期刊,最好是直接去IEEE官网搜索并导出引用,否 阅读全文
posted @ 2021-05-30 00:56 颀周 阅读(734) 评论(0) 推荐(0) 编辑
摘要: Pyecharts是百度开源的移植到Python上的可视化工具,里面方法调用起来像是标记性语言,因此代码的可读性很强,一目了然。下面是一个绘制散点图的例子: #%% import pyecharts.options as opts from pyecharts.charts import Scatt 阅读全文
posted @ 2021-04-10 18:59 颀周 阅读(229) 评论(0) 推荐(0) 编辑
摘要: PIL全称Python Image Library,是python官方的图像处理库,包含各种图像处理模块。Pillow是PIL的一个派生分支,包含与PIL相同的功能,并且更灵活。python3.0之后,PIL不再更新,pillow代替了它原有的地位。Pillow的官方文档: https://pill 阅读全文
posted @ 2021-03-27 08:54 颀周 阅读(764) 评论(0) 推荐(0) 编辑
摘要: 在炼丹时,数据的读取与预处理是关键一步。不同的模型所需要的数据以及预处理方式各不相同,如果每个轮子都我们自己写的话,是很浪费时间和精力的。Pytorch帮我们实现了方便的数据读取与预处理方法,下面记录两个DEMO,便于加快以后的代码效率。 根据数据是否一次性读取完,将DEMO分为: 1、串行式读取。 阅读全文
posted @ 2021-03-26 11:07 颀周 阅读(774) 评论(0) 推荐(0) 编辑
摘要: 由于论文中常见很多种颜色空间,各种颜色空间的通道都有特殊的用处,下面对常见的颜色通道进行总结。 RGB RGB(Red红 Green绿 Blue蓝)是最常用的颜色空间,模拟光的混合原理。三个通道的取值范围都为$[0,255]$,共有$256^3 = 16777216$种色彩表示。三个通道的叠加与红绿 阅读全文
posted @ 2021-03-05 19:46 颀周 阅读(849) 评论(0) 推荐(0) 编辑
摘要: 经典超分辨率重建论文,基于稀疏表示。下面首先介绍稀疏表示,然后介绍论文的基本思想和算法优化过程,最后使用python进行实验。 稀疏表示 稀疏表示是指,使用过完备字典中少量向量的线性组合来表示某个元素。过完备字典是一个列数大于行数的行满秩矩阵,也就是说,它的列向量有无数种线性组合来表达列向量空间中的 阅读全文
posted @ 2021-03-04 21:32 颀周 阅读(1454) 评论(15) 推荐(0) 编辑
摘要: 反向投影法是用已知图像的某些特征来突出其它图像中此类特征的一种方法,基于直方图。 主要步骤如下: 1、统计已知图像某个特征的色度直方图,通常用色度-饱和度(Hue-Saturation)来统计二维直方图,并把直方图表示为概率的形式。 2、选取测试图像,对于图像中的每一个像素,查看它的色度在已统计直方 阅读全文
posted @ 2021-03-02 10:05 颀周 阅读(320) 评论(0) 推荐(0) 编辑
摘要: 分组卷积 之间看分组卷积示意图。 不分组: 分两组: 分四组: 以此类推。当然,以上都是均匀分组的,不均分也是可以的。至于分组卷积有什么好处,很明显,可以节省参数量。假设不使用分组时,卷积核的参数量为: $n = k^2c_1c_2$ 其中$k,c_1,c_2$分别表示卷积核宽度,输入通道数,输出通 阅读全文
posted @ 2021-02-23 22:30 颀周 阅读(544) 评论(0) 推荐(0) 编辑
摘要: 变分自动编码器的大致概念已经理解了快一年多了,但是其中的数学原理还是没有搞懂,在看到相关的变体时,总会被数学公式卡住。下决心搞懂后,在此记录下我的理解。 公式推导——变分下界 这篇文章提出一种拟合数据集分布的方法,拟合分布最常见的应用就是生成模型。该方法遵循极大似然策略,即对于数据集$X = \{x 阅读全文
posted @ 2021-02-15 22:58 颀周 阅读(510) 评论(0) 推荐(0) 编辑
摘要: 对于显存不充足的炼丹研究者来说,弄清楚Pytorch显存的分配机制是很有必要的。下面直接通过实验来推出Pytorch显存的分配过程。 实验实验代码如下: import torch from torch import cuda x = torch.zeros([3,1024,1024,256],req 阅读全文
posted @ 2020-12-09 21:40 颀周 阅读(1214) 评论(0) 推荐(1) 编辑
摘要: 在命令行中运行python代码是很常见的,下面介绍如何定义命令后面跟的参数。 常规用法 Python代码中主要使用下面几行代码来定义并获取需要在命令行中赋值的参数: import argparse parser = argparse.ArgumentParser("Description.") # 阅读全文
posted @ 2020-11-30 13:19 颀周 阅读(608) 评论(0) 推荐(0) 编辑
摘要: 下面通过实验来探索Pytorch分配显存的方式。 实验 显存到主存 我使用VSCode的jupyter来进行实验,首先只导入pytorch,代码如下: import torch 打开任务管理器查看主存与显存情况。情况分别如下: 在显存中创建1GB的张量,赋值给a,代码如下: a = torch.ze 阅读全文
posted @ 2020-11-16 23:21 颀周 阅读(1204) 评论(0) 推荐(0) 编辑
摘要: 训练视觉相关的神经网络模型时,总是要用到图像的读写。方法有很多,比如matplotlib、cv2、PIL等。下面比较几种读写方式,旨在选出一个最快的方式,提升训练速度。 实验标准 因为训练使用的框架是Pytorch,因此读取的实验标准如下: 1、读取分辨率都为1920x1080的5张图片(png格式 阅读全文
posted @ 2020-11-14 22:16 颀周 阅读(618) 评论(0) 推荐(2) 编辑
摘要: 使用GAN生成图像必不可少的层就是上采样,其中最常用的就是转置卷积(Transposed Convolution)。如果把卷积操作转换为矩阵乘法的形式,转置卷积实际上就是将其中的矩阵进行转置,从而产生逆向的效果。所谓效果仅仅在于特征图的形状,也就是说,如果卷积将特征图从形状a映射到形状b,其对应的转 阅读全文
posted @ 2020-10-29 23:19 颀周 阅读(2088) 评论(2) 推荐(2) 编辑
摘要: Tensorboard是TF自带的可视化工具。它可以让我们从各个角度观察与修改模型,比如观察模型在训练时的loss动态变化曲线而无需在迭代完毕后再画图、绘制神经网络的结构图、调节超参数等。下面以最简单的形式展示tensorboard的常用功能。 开启tensorboard 打开命令行输入 tenso 阅读全文
posted @ 2020-10-26 20:00 颀周 阅读(1200) 评论(0) 推荐(0) 编辑
摘要: 本来是只用Tenorflow的,但是因为TF有些Numpy特性并不支持,比如对数组使用列表进行切片,所以只能转战Pytorch了(pytorch是支持的)。还好Pytorch比较容易上手,几乎完美复制了Numpy的特性(但还有一些特性不支持),怪不得热度上升得这么快。 模型定义 和TF很像,Pyto 阅读全文
posted @ 2020-10-25 14:05 颀周 阅读(1079) 评论(0) 推荐(1) 编辑
摘要: 虽然不是什么有应用价值的定理,但是每次看到实对称矩阵时总会有疑惑,现在记录下来。 证明 设有实对称矩阵$A$,它的特征值与对应的特征向量分别为$\lambda,x$,另外记$\overline{A},\overline{\lambda},\overline{x}$分别为它们对应的共轭复数(矩阵和向量 阅读全文
posted @ 2020-10-23 16:10 颀周 阅读(3465) 评论(0) 推荐(0) 编辑
摘要: 在深度学习中,我们通常对模型进行抽样并计算与真实样本之间的损失,来估计模型分布与真实分布之间的差异。并且损失可以定义得很简单,比如二范数即可。但是对于已知参数的两个确定分布之间的差异,我们就要通过推导的方式来计算了。 下面对已知均值与协方差矩阵的两个多维高斯分布之间的KL散度进行推导。当然,因为便于 阅读全文
posted @ 2020-10-12 20:29 颀周 阅读(2433) 评论(0) 推荐(0) 编辑
摘要: GAN自推出以来就以训练困难著称,因为它的训练过程并不是寻找损失函数的最小值,而是寻找生成器和判别器之间的纳什均衡。前者可以直接通过梯度下降来完成,而后者除此之外,还需要其它的训练技巧。 下面对历年关于GAN的论文提出的训练技巧进行总结,这里仅记录技巧,具体原理请直接看论文原文。 WGAN和WGAN 阅读全文
posted @ 2020-10-05 21:47 颀周 阅读(1291) 评论(0) 推荐(0) 编辑
摘要: WGAN论文指出,原始GAN以JS、KL散度作为损失容易导致生成器梯度消失,他们提出了一种新的损失函数——Wasserstein 距离,很大程度上解决了GAN训练难的问题。 原始GAN的损失函数的缺陷 当两个分布之间重叠很小,或者说,两个分布的概率密度同时大于0的区域在整个分布的占比几乎为0时(无穷 阅读全文
posted @ 2020-08-31 10:19 颀周 阅读(691) 评论(0) 推荐(1) 编辑
摘要: 以二维正态分布来举例。当方差不变,而协方差变化时,分布沿着长宽比等于两个方差之比的矩阵逐渐变窄。如下图所示: 两个分布的标准差都为0.1,均值都为0,协方差左边从0一直上升到0.01,右边从0下降到-0.01。 看了这个图,有人可能会问,随着协方差的变化,同一高度的椭圆等高线是否始终与矩形相切。看起 阅读全文
posted @ 2020-08-25 23:28 颀周 阅读(1230) 评论(0) 推荐(1) 编辑
摘要: Keras是基于Tensorflow(以前还可以基于别的底层张量库,现在已并入TF)的高层API库。它帮我们实现了一系列经典的神经网络层(全连接层、卷积层、循环层等),以及简洁的迭代模型的接口,让我们能在模型层面写代码,从而不用仔细考虑模型各层张量之间的数据流动。 但是,当我们有了全新的想法,想要个 阅读全文
posted @ 2020-08-20 23:51 颀周 阅读(2065) 评论(0) 推荐(1) 编辑
摘要: 生成模型产生的是高维的复杂结构数据,它们不同于判别模型,很难用简单的指标来评估模型的好坏。下面介绍两种当前比较流行的评估生成模型的指标(仅判别图像):IS(Inception Score)和FID(Frechet Inception Distance score)。 IS IS基于Google的预训 阅读全文
posted @ 2020-08-19 13:27 颀周 阅读(7760) 评论(0) 推荐(1) 编辑
摘要: 现在的神经网络通常都特别深,在输出层向输入层传播导数的过程中,梯度很容易被激活函数或是权重以指数级的规模缩小或放大,从而产生“梯度消失”或“梯度爆炸”的现象,造成训练速度下降和效果不理想。 如何避免或者减轻这一现象的发生呢?归一化就是方法的一种。归一化将网络中层与层之间传递的数据限制在一定范围内,从 阅读全文
posted @ 2020-08-18 13:03 颀周 阅读(1628) 评论(0) 推荐(1) 编辑
摘要: 定义 协方差矩阵是用来衡量一组随机变量之间的线性关系的矩阵。我们都知道,对于$n$个随机变量$X_1,X_2,...,X_n$,总体协方差矩阵定义为: $ \left[ \begin{matrix} D(X_1)&Cov(X_1,X_2)&\dots&Cov(X_1,X_n)\\ Cov(X_2,X 阅读全文
posted @ 2020-08-13 13:47 颀周 阅读(8545) 评论(0) 推荐(2) 编辑
摘要: 隐马尔可夫模型(Hidden Markov Model, HMM)是可用于标注问题的模型,描述由隐藏的马尔可夫链随机生成观测序列的过程,属于生成模型。马尔可夫链不懂的可以把本科的《概率论与数理统计》找回来看一下,并不难,就是离散状态之间的转换。下面直接定义基本概念,为后面的算法做准备。 基本概念 变 阅读全文
posted @ 2020-08-10 15:01 颀周 阅读(1238) 评论(1) 推荐(1) 编辑
摘要: 深度学习优化算法最耳熟能详的就是GD(Gradient Descend)梯度下降,然后又有一个所谓的SGD(Stochastic Gradient Descend)随机梯度下降,其实还是梯度下降,只不过每次更新梯度不用整个训练集而是训练集中的随机样本。梯度下降的好处就是用到了当前迭代的一些性质,以至 阅读全文
posted @ 2020-08-04 18:51 颀周 阅读(861) 评论(0) 推荐(2) 编辑
摘要: GAN的定义 GAN是一个评估和学习生成模型的框架。生成模型的目标是学习到输入样本的分布,用来生成样本。GAN和传统的生成模型不同,使用两个内置模型以“对抗”的方式来使学习分布不断接近输入样本分布。两个模型一个是生成模型(Generative model),用来生成样本;另一个是判别模型(Discr 阅读全文
posted @ 2020-08-03 22:44 颀周 阅读(2369) 评论(0) 推荐(1) 编辑
摘要: ReLu $\max(0,z)$ 修正线性单元,是最常用的非线性映射函数。常在神经网络隐层中使用,因为它在反向传播中计算导数十分方便。导数为: $\left\{\begin{aligned}&1,z\ge0\\&0,z<0\end{aligned}\right.$ softplus $\log(1+ 阅读全文
posted @ 2020-08-02 11:27 颀周 阅读(603) 评论(0) 推荐(1) 编辑
摘要: 集群系统通常使用SLURM作业调度脚本来提交、查看、修改作业。以下记录它的脚本与命令的编写与使用。 常用命令 以下是各种常用命令: squeue #查看当前执行中的任务情况 sinfo #查看所有分区的情况 sacct #查看24小时内的历史任务 scancel 56200 #取消id为56200的 阅读全文
posted @ 2020-07-30 12:15 颀周 阅读(1029) 评论(0) 推荐(1) 编辑
摘要: 遗传算法(Genetic Algorithm, GA)是一种通用的优化算法,属于进化算法簇中一个比较实用又有名的算法。进化算法融合了自然生物进化中共有的一些行为:繁殖、变异、竞争、选择等。 基本流程 GA通过迭代来优化目标函数的参数,直到目标函数满足一定条件时结束。迭代对目标函数的连续性并无要求,也 阅读全文
posted @ 2020-07-28 23:15 颀周 阅读(1061) 评论(0) 推荐(2) 编辑
摘要: 变分自编码器(variational autoencoder, VAE)是一种生成模型,训练模型分为编码器和解码器两部分。 编码器将输入样本映射为某个低维分布,这个低维分布通常是不同维度之间相互独立的多元高斯分布,因此编码器的输出为这个高斯分布的均值与对数方差(因为方差总是大于0,为了将它映射到$( 阅读全文
posted @ 2020-07-23 22:44 颀周 阅读(2890) 评论(0) 推荐(0) 编辑
摘要: Tensorflow/Keras 直接从文件生成图片数据 ImageDataGenerator,循环生成图片,在重复生成图片之前,会把所有图片都遍历一遍。而且如果图片总量不是生成批量的倍数的话,在生成重复图片的前一次的批量是不完整的。具体代码: import tensorflow as tf fro 阅读全文
posted @ 2020-06-22 20:58 颀周 阅读(596) 评论(0) 推荐(0) 编辑
摘要: EM算法是一种迭代算法,用于含有隐变量的概率模型参数的极大似然估计。 使用EM算法的原因 首先举李航老师《统计学习方法》中的例子来说明为什么要用EM算法估计含有隐变量的概率模型参数。 假设有三枚硬币,分别记作A, B, C。这些硬币正面出现的概率分别是$\pi,p,q$。进行如下掷硬币试验:先掷硬币 阅读全文
posted @ 2020-06-21 21:05 颀周 阅读(2686) 评论(0) 推荐(1) 编辑
摘要: K均值聚类是一种无监督学习分类算法。 介绍 对于$n$个$m$维特征的样本,K均值聚类是求解最优化问题: $\displaystyle C^*=\text{arg}\min\limits_{C}\sum\limits_{l = 1}^K\sum\limits_{x\in C_l}||x-x_l||^ 阅读全文
posted @ 2020-06-10 16:10 颀周 阅读(649) 评论(0) 推荐(0) 编辑
摘要: 反向传播算法基于多元函数链式法则,以下记录多元函数链式法则的证明与反向传播算法的实例推演。 多元复合函数的求导法则(多元链式法则) 定义 如果函数$u=\varphi(t)$及$v=\psi(t)$都在点$t$可导,函数$z = f(u,v)$在对应点$(u,v)$具有连续偏导数(重点),那么复合函 阅读全文
posted @ 2020-06-06 17:19 颀周 阅读(1528) 评论(0) 推荐(0) 编辑
摘要: TIKZ是LaTeX的一个绘图包,可以绘制其他软件很难画出来的图像。 基本用法 直线、垂足、矩形、椭圆 代码: \documentclass{article} \usepackage{tikz} \usetikzlibrary{arrows.meta}%画箭头用的包 \begin{document} 阅读全文
posted @ 2020-06-03 21:29 颀周 阅读(12020) 评论(2) 推荐(1) 编辑