并行异构计算概述
GPU vs. CPU
CPU 计算适合处理控制密集型任务,GPU 计算适合处理包含数据并件的计算密集型任务。
CPU 核心比较重,用来处理非常复杂的控制逻辑,以优化串行程序执行。
GPU 核心比较轻,用于优化具有简单控制逻辑的数据并行任务,注重并行程序的吞吐量。
GPU 不是一个独立运行的平台而是 CPU 的协处理器,因此 GPU 必须通过 PCIe 总线与基于 CPU 的主机相连来进行操作。CPU 所在的位置被称作主机端,而 GPU 所在的位置被称作设备端。
NVIDIA 公司的 GPU 计算平台有以下产品:
产品系列
说明
Tegra
专为移动和嵌入式设备而设计的,如平板、手机
GeForce
面向图形用户
Quadro
用于专业绘图设计
Tesla
用于大规模的并行计算
Fermi
是 Tesla 系列中的一种,在高性能计算中得到广泛应用。世界上第一款完整的 GPU 计算架构
Kepler
Fermi 之后的新一代 GPU 计算架构
描述 GPU 容量有两个重要特征:
CUDA 核心数量
内存大小
相应的有两种不同 ...
拉格朗日乘子法
1. 简介
拉格朗日乘子法是一种寻找多元函数在其变量受到一个或多个条件的约束时的局部极值的方法。这种方法可以将一个有 nnn 个变量与 kkk 个约束条件的最优化问题转换为一个解有 n+kn+kn+k 个变量的方程组的解的问题。
2. 方法
2.1 拉格朗日乘法定理
设 f:Rn→Rf: \mathbb{R}^n \rightarrow \mathbb{R}f:Rn→R 为目标函数,g:Rn→Rcg: \mathbb{R}^n \rightarrow \mathbb{R}^cg:Rn→Rc 为约束函数,二者有连续的一阶导数。令 x∗x_*x∗ 为下列问题的一个最优解,使得 rank(Dg(x∗))=c<n\mathrm{rank}(D g(x_*)) = c < nrank(Dg(x∗))=c<n,其中 Dg(x∗)D g(x_*)Dg(x∗) 表示偏导矩阵 [Dg(x∗)]j,k=[∂gj∂xk][Dg(x_*)]_{j, k} = \left[\frac{\partial g_j}{\partial x_k}\right][Dg(x∗)]j,k=[∂xk ...
Nano编辑器入门
1. 简介
Nano 编辑器是很多 Linux 发行版默认配备的命令行编辑器。尽管可以将系统默认配置修改成 vi/vim 等功能更强大的编辑器,但每个环境都修改配置未免过于麻烦。因此,掌握 Nano 编辑器的基本使用还是有必要的。
2. 常用快捷键
在 Nano 编辑器页面中,会给出一些快捷键提示,其 ^ 符号表示 Ctrl 键,其 M 符号表示 Alt 键。
快捷键
说明
Ctrl+A/Ctrl+E
将光标移动到行首/行尾
Ctrl+Y/Ctrl+V
向上/下翻页
Ctrl+Shift+-
将光标移动到特定位置
Alt+A/Ctrl+6
设置/取消标记,结合「方向键」可选中文本
Alt+6
复制选中的文本
Ctrl+K
剪切选中的文本,未选中文本则剪切整行
Ctrl+U
粘贴选中的文本/整行
Alt+U
撤销上一次操作
Alt+E
重做上一次操作
Ctrl+W,Alt+W
前者搜索文本,后者移动到下一个匹配点
Ctrl+\
搜索和替换
Ctrl+O
保存修改
Ctrl+X
退出编辑
Ctrl+G
打开帮助文档
...
ArchLinux安装ibus-rime输入法
1. 简介
ArchLinux 下一般都推荐安装 fcitx 或者 fcitx5,但是没想到即使是 fcitx5 还是存在很多问题。本文就是写于我的 ArchLinux 上 fcitx5 无法使用 rime 输入法之际,寻求解决方案无果后,只能转而使用 ibus。
2. 安装
在安装 ibus-rime 之前,需要先将 fcitx5 的环境(如果有的话)清除掉。最简单暴力的方法就是将 fcitx5 及其相关包卸载,另一种方法就是保留应用程序,但将其启动设置关闭,以备后来想换回 fcitx5。本人就是采用后一种方法,具体来说:
将 fcitx5 的开启自启程序关闭:ArchLinux 下程序的自启脚本主要在以下两个目录中
12~/.config/autostart # 用户自启脚本目录/etc/xdg/autostart # 系统自启脚本目录
其中,~/.config/autostart 中的自启项,可以到「System Settings」->「Startup and Shutdown」->「Autostart」中删除对应程序即可。对于 /etc/xdg/autostar ...
Mac终端Shell命令Open
1. 简介
Mac 下手动打开目录、文件和应用程序等和 Windows 都很一不样,用惯 Windows 的用户刚开始使用 Mac 系统可能会非常不习惯。好在 Mac 下有一个非常方便的命令行工具 open,它能很方便地打开 Mac 上的目录、文件和应用程序。
2. 格式
12345678910111213141516171819202122232425Usage: open [-e] [-t] [-f] [-W] [-R] [-n] [-g] [-h] [-s <partial SDK name>][-b <bundle identifier>] [-a <application>] [-u URL] [filenames] [--args arguments]Help: Open opens files from a shell. By default, opens each file using the default application for that file. If the file is in the fo ...
Mac终端打开应用程序
1. 简介
在 Mac 下安装应用时,如果直接在终端使用 brew 安装,则一般都可以在终端直接输入应用名打开。但对于非终端下安装的应用程序,则不能直接在终端下打开。
2. 方法
对于 Mac 非终端安装的应用程序,可以使用以下命令打开:
1open -a <app_name>
其中,-a 参数表示打开应用程序,即 Application。
附录
How to Open Applications Using Terminal on Mac
推荐系统常用评价指标
1. 基本概念
正样本:预测标签与真实标签一致的样本;
负样本:预测标签与真实标签不一致的样本;
困难样本:预测值与实际标签误差较大的样本;
简单样本:预测值与实际标签误差较小的样本。
2. AUC
AUC: Area Under ROC Curve,同目标检测中的 AUC 指标。
理解:随机抽取一对正负样本,AUC 是把正样本预测为 111 的概率大于把负样本预测为 111 的概率的概率。
意义:当 AUC 为 0.50.50.5 时,模型没有分类能力,完全是随机猜测;AUC 越大说明模型越具有分类能力。
3. GAUC
GAUC: Group AUC,先计算各个用户自己的 AUC,然后取加权平均。公式如下:
GAUC=∑uiwui⋅AUCui∑wui\mathrm{GAUC} = \frac{\sum_{ui} w_{ui} \cdot \mathrm{AUC}_{ui}}{\sum w_{ui}}
GAUC=∑wui∑uiwui⋅AUCui
4. HR@K
HR@K: Hit Ratio,即命中率,数学公式如下:
HR@K=∑iKhit(i)N\mathrm{H ...
特征值分解
1. 简介
以物理中「力」的角度来看待,我们通常会将「合力」分解为各个「分力」,来描述整个「合力」的影响。特征值分解便是将「矩阵」分解成各个方向的分量,通过对各个分量的刻画来描述此矩阵。
特征分解:eigen decomposition
特征向量:eigen vector
特征值:eigen value
2. 理解
设矩阵 A∈Rn×nA \in \mathbb{R}^{n \times n}A∈Rn×n,向量 x∈Rn×1x \in \mathbb{R}^{n \times 1}x∈Rn×1,则有:
矩阵乘法本质是一种变换。以几何角度来看,AxAxAx 表示对向量 xxx 进行旋转和伸缩变换。
矩阵 AAA 的特征向量是一种特殊的向量,满足 Ax=λxAx = \lambda xAx=λx。也就是说,矩阵 AAA 对特征向量 xxx 只起到伸缩变换的作用,而没有旋转变换的作用。
Ax=λxAx = \lambda xAx=λx 表示矩阵 AAA 和特征值 λ\lambdaλ、特征向量 xxx 之间建立了联系,但无法通过单一的 λ\lambdaλ 和 xxx 来表示 A ...
目标检测概述
1. 简介
目前学术和工业界出现的目标检测算法分成三类:
传统的目标检测算法
Cascade + HOG / DPM + Haar / SVM
候选窗 + 深度学习分类
提取候选区域 + 深度深度习方法分类
R-CNN(Selective Search + CNN + SVM)SPP-Net(ROI Pooling)Fast R-CNN(Selective Search + CNN + ROI)Faster R-CNN(RPN + CNN + ROI)R-FCN 等系列方法
基于深度学习的回归方法
YOLO / SSD / DenseBox 等方法
结合 RNN 算法的 RRC detection;结合 DPM 的 Deformable CNN 等
深度学习经典检测方法主要分为两类:
两阶段 Two-stage:Faster-RCNN、Mask-RCNN 系列
单阶段 One-stage:YOLO 系列
2. 相关指标
2.1 F1-Score
TP:True Positive,正样本被正确分为了正类;
TN:True Negative,负样本被正确分为了负 ...
聚类方法
1. 简介
聚类是针对给定的样本,依据它们特征的相似度或距离,将其归并到若干个「类」或「簇」的数据分析问题。一个类是样本的一个子集,直观上,相似的样本聚集在相同的类,不相似的样本分散在不同的类。
聚类的目的是通过得到的类或和入在来发现数据的特和点或对数据进行处理,在数据挖掘、模式识别等领域有着广泛的应用。聚类属于无监督学习,因为只是根据样本的相似度或距离将其进行归类,而类或簇事先并不知道。
常用的聚类算法有:层次聚类和 K 均值聚类。层次聚类又有聚合(自下而上)和裂(自上而下)两种方法。
聚合法:开始将每个样本各自分到一个类,之后将相距最近的两类合并,建立一个新的类,重复此操作直到满足停止条件,得到层次化的类别。
分裂法:开始将所有样本分到一个类,之后将已有类中相距最远的样分到到两个新的类,重复此操作直到满足停止条件,得到层次化的类别。
KKK 均值聚类是基于中心的聚类方法,通过迭代,将样本分到 KKK 个类中,使得每个样本与其所属类的中心或均值最近,最后得到 KKK 个平坦的、非层次化的类别,构成对空间的划分。
2. 基本概念
聚类的基本概念,主要包括样本之间的距离或相似度、类或 ...
最大熵模型
1. 简介
最大熵模型由最大熵原理推导实现。
2. 最大熵原理
最大熵原理是概率模型学习的一个原则。最大熵原理认为,学习概率模型时,在所有可能的概率模型中,熵最大的模型是最好的模型。通常用约束条件来确定概率模型的集合,因此最大熵原理也可以表述为在满足约束条件的模型集合中选取熵最大的模型。
假设离散随机变量 XXX 的概率分布是 P(X)P(X)P(X),则其熵为
H(P)=−∑xP(x)logP(x)H(P) = - \sum_{x} P(x) \log{P(x)}
H(P)=−x∑P(x)logP(x)
熵满足下列不等式:
0≤H(P)≤log∣X∣0 \leq H(P) \leq \log{|X|}
0≤H(P)≤log∣X∣
式中,∣X∣|X|∣X∣ 是 XXX 的取值个数,当且仅当 XXX 的分布是均匀分布时右边的等号成立。
直观上来看,最大熵原理认为要选择的概率模型首先必须满足已有事实,即约束条件。在没有更多信息的情况下,那些不确实的部分都是「等可能的」。最大熵原理通过熵的最大化来表示等可能性。
3. 最大熵模型
假设分类模型是一个条件概率分布 P(Y∣X)P(Y ...
支持向量机
1. 简介
支持向量机(Support Vector Machines,SVM)是一种二类分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机。支持机还包括核技巧,这使它成为实质上的非线性分类器。支持向量机的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题。
支持向量机学习方法包含构建由简至繁的模型:线性可分支持向量机、线性支持向量机以及非线性支持向量机。
当训练数据线性可分时,通过硬间隔最大化,学习一个线性的分类器, 即线性可分支持向量机,又称硬间隔支持向量机;当训练数据近似线性可分时,通过软间隔最大化,也学习一个线性的分类器,即线性支持向量机,又称为软间隔支持向量机;当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机。
2. 线性可分支持向量机
假设给定一个特征空间上的训练数据集
T={(x1,y1),(x2,y2),⋯ ,(xN,yN)}T = \{(x_1, y_1), (x_2, y_2), \cdots, (x_N, y_N)\}
T={(x1,y1),(x2,y2),⋯,(xN,yN)} ...