记录踩过的坑-AI
发布日期:2021-05-04 03:56:59 浏览次数:16 分类:技术文章

本文共 6899 字,大约阅读时间需要 22 分钟。

目录


基础知识

人工智能:AI,Artificial Intelligence

人工智能体:AI agent

符号主义人工智能:symbolic AI

只要程序员精心编写足够多的明确规则来处理知识,就可以实现与人类水平相当的人工智能。

专家系统:expert system

机器学习:machine learning

假设空间:hypothesis space

深度:depth

分层表示学习:layered representations learning

层级表示学习:hierarchical representations learning

深度可微模型:deep differentiable model

链式几何变换:chained geometric transform

浅层学习:shallow learning

达到人类水平的通用智能:human-level general intelligence

监督学习:supervised learning

掩模:mask

无监督学习:没有目标的情况下寻找输入数据的变换,其目的在于数据可视化、数据压缩、数据去噪或更好地理解数据中的相关性。

降维:dimensionality reduction

聚类:clustering

自编码器:autoencoder

时序监督学习:temporally supervised learning

泛化:generalize

同质性:homogeneous,所有特征的取值都在大致相同的范围内

特征工程:feature engineering

Python 生成器:Python generator

稀疏度:sparsity

类激活图:CAM,class activation map

前馈网络:feedforward network

梯度消失问题:vanishing gradient problem

梯度爆炸:Gradient Explode

梯度截断:Gradient Clipping

类图模型:graph-like model

图:graph

计算图:Computational Graph

多模态:multimodal

有向无环图:directed acyclic graph

无环:acyclic

模型集成:model ensembling

神经风格迁移:neural stype transfer

联结主义:connectionism

Epoch:迭代期,训练完一次训练数据包含的所有迷你批次为一个迭代期

语言模型(Language Model,LM)

潜在空间:latent space

统计机器翻译:Statistical Machine Translation,SMT

Alignment:对齐

热力图:Heat Map

推断(Inference)

就是深度学习把从训练中学习到的能力应用到工作中去。

HOG( Histogram of OrientedGradients) - 方向梯度直方图

HOD(Histogram of Oriented Depths) - 深度方向直方图

后端引擎:backend engine

Neural Architecture Search(NAS):神经网络架构搜索

机器学习中的判别模型和生成模型

假设我们有训练数据(X,Y),X是属性集合,Y是类别标记。这时来了一个新的样本x,我们想要预测它的类别y。

我们最终的目的是求得最大的条件概率P(y|x)作为新样本的分类。

判别模型

根据训练数据得到分类函数和分界面,比如说根据SVM模型得到一个分界面,然后直接计算条件概率P(y|x),我们将最大的P(y|x)作为新样本的分类。判别式模型是对条件概率建模,学习不同类别之间的最优边界,无法反映训练数据本身的特性,能力有限,其只能告诉我们分类的类别。

生成模型

一般会对每一个类建立一个模型,有多少个类别,就建立多少个模型。比如说类别标签有{猫,狗,猪},那首先根据猫的特征学习出一个猫的模型,再根据狗的特征学习出狗的模型,之后分别计算新样本x跟三个类别的联合概率p(x,y),然后根据贝叶斯公式:

分别计算P(y|x),选择三类中最大的P(y|x)作为样本的分类。

1.3 两个模型的小结

不管是生成式模型还是判别式模型,它们最终的判断依据都是条件概率P(y|x),但是生成式模型先计算了联合概率p(x,y),再由贝叶斯公式计算得到条件概率。因此,生成式模型可以体现更多数据本身的分布信息,其普适性更广。

 

数据及其处理

见以下链接

 

目标问题

见以下链接

 

机器学习框架

见以下链接

 

神经网络

见以下链接

 

其他算法

动态规划:Dynamic Programming

因子分析:factor analysis

混合因子分析:Mixture of  Factor Analyzers (MoFA)

期望最大化(Expectation-Maximization, EM)算法

混合高斯:Mixture of Gaussians (MoG)

Bitonic Sort:双调排序,比较顺序与数据无关,适合并行计算。

概率建模:probabilistic modeling,如朴素贝叶斯算法

logistic回归:logistic regression,logreg,一种分类算法

核方法:kernel method,一组分类算法,如支持向量机

支持向量机:SVM,support vector machine

核技巧:kernel trick

核函数:kernel function

支持向量机通过某非线性变换 φ( x) ,将输入空间映射到高维特征空间。特征空间的维数可能非常高。如果支持向量机的求解只用到内积运算,而在低维输入空间又存在某个函数 K(x, x′) ,它恰好等于在高维空间中这个内积,即K( x, x′) =<φ( x) ⋅φ( x′) > 。那么支持向量机就不用计算复杂的非线性变换,而由这个函数 K(x, x′) 直接得到非线性变换的内积,使大大简化了计算。这样的函数 K(x, x′) 称为核函数。

决策树:decision tree

随机森林:random forest

梯度提升机:gradient boosting machine

长短期记忆:LSTM,long short-term memory

CRC:(Cyclic Redundancy Check)校验实用程序库在数据存储和数据通讯领域,为了保证数据的正确,就不得不采用检错的手段。在诸多检错手段中,CRC是最著名的一种。CRC的全称是循环冗余校验。

GRU:gated recurrent unit,门控循环单元

贪婪采样:greedy sampling

随机采样:stochastic sampling

尺度不变特征变换:Scale-invariant feature transform,SIFT

最近邻插值:Nearest Neighbor Interpolation

双线性插值:Bilinear Interpolation

指数学习率衰减:Exponential Decay

余弦退火:Cosine Annealling

策略梯度算法:Policy Gradient

伽马校正:Gamma Correction

直方图均衡:Histogram Equalization

降采样:Down-sampling

拉普拉斯滤波器:Laplacian Filter

高斯-拉普拉斯滤波器:Laplacian of Gaussian,LoG

高斯过滤器的差值:Difference of Gaussian,DoG

SSD:Single Shot MultiBox Detector,单阶段的目标检测算法

困难负样本挖掘:Hard Negative Mining

非极大抑制算法:Non-Maximum Supression,NMS

沿时间反向传播算法:Backpropogation Through Time,BPTT

自回归:Autoregression

教师强制:Teacher Forcing

计划采样:Scheduled Sampling

Seq2Seq:Sequence To Sequence

贪心解码:Greedy Decoding

波束搜索:Beam Search

协同过滤:Collaborative Filtering

因子分解机:Factorization Machines,FM

矩阵分解:Matrix Factorization

奇异值分解:Singular Value Decomposition,SVD

μ-率变换:μ-law transformation

轮询调度算法:Round Robin

随机游走:随机游走(random walk)也称随机漫步,随机行走等是指基于过去的表现,无法预测将来的发展步骤和方向。核心概念是指任何无规则行走者所带的守恒量都各自对应着一个扩散运输定律 ,接近于布朗运动,是布朗运动理想的数学状态,现阶段主要应用于互联网链接分析及金融股票市场中。

布朗运动(Brownian motion): 布朗运动是将看起来连成一片的液体,在高倍显微镜下看其实是由许许多多分子组成的。液体分子不停地做无规则的运动,不断地随机撞击悬浮微粒。当悬浮的微粒足够小的时候,由于受到的来自各个方向的液体分子的撞击作用是不平衡的。在某一瞬间,微粒在另一个方向受到的撞击作用超强的时候,致使微粒又向其它方向运动,这样,就引起了微粒的无规则的运动就是布朗运动。(布朗运动指的是分子迸出的微粒的随机运动,而不是分子的随机运动。)  即布朗运动代表了一种随机涨落现象。普遍的观点仍认为,股票市场是随机波动的,随机波动是股票市场最根本的特性,是股票市场的常态。(随机现象的数学定义是:在个别试验中其结果呈现出不确定性;在大量重复试验中其结果又具有统计规律性的现象。)而布朗运动假设是现代资本市场理论的核心假设。

Knuth-Shuffle 算法

假设有这样一个数组 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],我们使用 Knuth-Shuffle 算法将数据打乱。基本流程是这样的,从最后一个数开始,往前遍历,每一次,从当前数和第 1 个数之间,随机选择一个数,与当前数字进行交换(这里的随机选择就直接使用程序语言中的 Random 随机一个索引即可)。

例如上面的数组,第一次循环,当前数字为 10,我们从 1~10 之间,随机选择一个数,与 10 交换,这样第 9 个索引位就算洗完了,接下来就是第 8 个索引位,也就是数字为 9,我们从第 1 个索引位与第 8 个索引位之间,选择一个数,第 9 交换,这样第 8 个索引位也就洗完了...。这个算法之所以公平,是因为保证了每一个元素出现在每一个位置上的概率,都是一样的。

逻辑回归

Logistic Regression 虽然被称为回归,但其实际上是分类模型,并常用于二分类。

Logistic 回归的本质是:假设数据服从这个分布,然后使用极大似然估计做参数的估计。

考虑二分类问题,给定数据集

考虑到取值是连续的,因此它不能拟合离散变量。可以考虑用它来拟合条件概率p(Y=1|x),因为概率的取值也是连续的。但是对于w≠0(若等于零向量则没有什么求解的价值),取值为R,不符合概率取值为 0 到 1,因此考虑采用广义线性模型。

最理想的是单位阶跃函数:

但是这个阶跃函数不可微,常用的替代函数:

的取值趋近于\infty,函数值趋近于1。当的取值趋近于-\infty,函数值趋近于0。当的取值为0时,函数值为0.5。

逻辑回归是在线性回归的基础上加了一个 Sigmoid 函数(非线形)映射,使得逻辑回归称为了一个优秀的分类算法。本质上来说,两者都属于广义线性模型,但他们两个要解决的问题不一样,逻辑回归解决的是分类问题,输出的是离散值,线性回归解决的是回归问题,输出的连续值。

我们需要明确 Sigmoid 函数到底起了什么作用:

  • 线性回归是在实数域范围内进行预测,而分类范围则需要在 [0,1],逻辑回归减少了预测范围;
  • 线性回归在实数域上敏感度一致,而逻辑回归在 0 附近敏感,在远离 0 点位置不敏感,这个的好处就是模型更加关注分类边界,可以增加模型的鲁棒性。

 

树相关的算法

见以下链接:

 

注意力

注意力机制:Attention Mechanism

Bahdanau注意力机制:又称加性注意力,Additive Attention

Luong注意力机制:又称乘性注意力,Multiplicative Attention

自注意力机制:Self-Attention Mechanism

多头注意力:Multihead Attention

掩码

mask(掩码、掩膜)是深度学习中的常见操作。简单而言,其相当于在原始张量上盖上一层掩膜,从而屏蔽或选择一些特定元素,因此常用于构建张量的过滤器(见下图)。

在这里插入图片描述

Mask的作用:

处理非定长序列

在NLP中,文本一般是不定长的,所以在进行 batch训练之前,要先进行长度的统一,过长的句子可以通过truncating 截断到固定的长度,过短的句子可以通过 padding 增加到固定的长度,但是 padding 对应的字符只是为了统一长度,并没有实际的价值,因此希望在之后的计算中屏蔽它们,这时候就需要 Mask。

例子:

RNN中的Mask

Attention中Mask

防止标签泄露

在语言模型中,常常需要从上一个词预测下一个词,但如果要在LM中应用 self attention 或者是同时使用上下文的信息,要想不泄露要预测的标签信息,就需要 mask 来“遮盖”它。不同的mask方式,也对应了一篇篇的paper,这里选取典型的几个。

例子:

Transformer中的Mask

BERT中的Mask

XLNet中的Mask

强化学习

见以下链接:

 

量化算法

对称量化算法

对称算法就是指将待量化数据的绝对值的最大值映射到新数据范围内的最大值。

非对称量化算法

非对称算法是指将待量化数据的最大值和最小值映射到新数据范围内的最大值最小值。

 

稀疏矩阵存储

Compressed Sparse Row (CSR, CRS or Yale format)

CSR是比较标准的一种,也需要三类数据来表达:数值,列号,以及行偏移。CSR不是三元组,而是整体的编码方式。数值和列号与COO一致,表示一个元素以及其列号,行偏移表示某一行的第一个元素在values里面的起始偏移位置。如上图中,第一行元素1是0偏移,第二行元素2是2偏移,第三行元素5是4偏移,第4行元素6是7偏移。在行偏移的最后补上矩阵总的元素个数,本例中是9。

 

语音识别

见以下链接:

 

其他

分布式训练

机器分为Parameter Server 和 woker 两类

Parameter server 负责整合梯度,更新参数

woker负责计算,训练网络

流程,共分为4步。  

Task Scheduler: 加载数据,并将数据分发给不同的workers

Workers:

  计算梯度:加载训练数据,从servers拉取最新的参数

  将梯度push到servers:从servers拉取最新的参数

Servers: 聚合梯度,更新参数

GPT族谱

 

K折交叉验证

第一步,不重复抽样将原始数据随机分为 k 份。

第二步,每一次挑选其中 1 份作为测试集,剩余 k-1 份作为训练集用于模型训练。

第三步,重复第二步 k 次,这样每个子集都有一次机会作为测试集,其余机会作为训练集。 在每个训练集上训练后得到一个模型, 用这个模型在相应的测试集上测试,计算并保存模型的评估指标,

第四步,计算 k 组测试结果的平均值作为模型精度的估计,并作为当前 k 折交叉验证下模型的性能指标。 

也可以专门留出测试集(不参与K折),而K折过程用于模型调优

../_images/grid_search_cross_validation.png

scikit-learn中计算交叉验证的函数:

cross_val_score:得到K折验证中每一折的得分,K个得分取平均值就是模型的平均性能

cross_val_predict:得到经过K折交叉验证计算得到的每个训练验证的输出预测

在最新的版本sklearn 0.21中cross_val_score与cross_validate被统一,cross_val_score仅仅为调用cross_validate返回字典的结果。

cross_val_score计算得到的平均性能可以作为模型的泛化性能参考

cross_val_predict计算得到的样本预测输出不能作为模型的泛化性能参考

机器学习中的random_state参数

见以下链接:

上一篇:记录踩过的坑-MAC
下一篇:记录踩过的坑-WPS文字

发表评论

最新留言

很好
[***.229.124.182]2025年03月31日 03时24分10秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章