机器学习常用的算法和名词


贪心算法
模拟退火
集束搜索
遗传算法
鲁棒性
余弦相似度
ELM
Siamese network
k-means
协同过滤

---------------------------------------------------------------------------------------------------------------------------------------------------


1.贪心算法
贪心算法的基本思路就是从问题的某一个初始解出发一步一步地进行,根据某个优化测试,每一步都要确保可以获得局部最优解。每一步只考虑一个数据,它的选取应该满足局部最优的条件下。若下一个数据和部分最优解连在一起不再是可行解时,就不把该数据添加到部分解中,知道把所有数据枚举完,或者不能再添加算法停止。
贪心选择是指所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到。这是贪心算法可行的第一个基本要素,也是贪心算法与动态规划算法的主要区别。贪心选择是采用从顶向下、以迭代的方法做出相继选择,每做一次贪心选择就将所求问题简化为一个规模更小的子问题。对于一个具体问题,要确定它是否具有贪心选择的性质,我们必须证明每一步所作的贪心选择最终能得到问题的最优解。通常可以首先证明问题的一个整体最优解,是从贪心选择开始的,而且作了贪心选择后,原问题简化为一个规模更小的类似子问题。然后,用数学归纳法证明,通过每一步贪心选择,最终可得到问题的一个整体最优解。
值得注意的是,贪心算法并不是在任何问题中可以使用,贪心策略一旦经过证明成立后,它就是一种高效的算法。贪心算法还是很常见的算法之一,这是由于它简单易行,构造贪心策略不是很困难。可惜的是,它需要证明后才能真正运用到题目的算法中。一般来说,贪心算法的证明围绕着:整个问题的最优解一定由在贪心策略中存在的子问题的最优解得来的。
在这里插入图片描述
2.模拟退火
模拟退火其实也是一种Greedy算法,但是它的搜索过程引入了随机因素。模拟退火算法以一定的概率来接受一个比当前解要差的解,因此有可能会跳出这个局部的最优解,达到全局的最优解。以上图为例,模拟退火算法在搜索到局部最优解B后,会以一定的概率接受向右继续移动。也许经过几次这样的不是局部最优的移动后会到达B 和C之间的峰点,于是就跳出了局部最小值B。
3.集束搜索
集束搜索又名定向搜索,是一种启发式图搜索算法,通常用在图的解空间比较大的情况下,为了减少搜索所占用的空间和时间,在每一步深度扩展的时候,剪掉一些质量比较差的结点,保留下一些质量较高的结点。这样减少了空间消耗,并提高了时间效率。
使用广度优先策略建立搜索树,在树的每一层,按照启发代价对节点进行排序,然后仅留下预先确定的个数(Beam Width-集束宽度)的节点,仅这些节点在下一层次继续扩展,其他节点就被剪掉了。
4.遗传算法-Genetic Algorithm
遗传算法是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。遗传算法是从代表问题可能潜在的解集的一个种群开始的,而一个种群则由经过基因编码的一定数目的个体组成。每个个体实际上是染色体带有特征的实体。染色体作为遗传物质的主要载体,即多个基因的集合,其内部表现(即基因型)是某种基因组合,它决定了个体的形状的外部表现,如黑头发的特征是由染色体中控制这一特征的某种基因组合决定的。因此,在一开始需要实现从表现型到基因型的映射即编码工作。由于仿照基因编码的工作很复杂,我们往往进行简化,如二进制编码,初代种群产生之后,按照适者生存和优胜劣汰的原理,逐代演化产生出越来越好的近似解,在每一代,根据问题域中个体的适应度大小选择个体,并借助于自然遗传学的遗传算子进行组合交叉和变异,产生出代表新的解集的种群。这个过程将导致种群像自然进化一样的后生代种群比前代更加适应于环境,末代种群中的最优个体经过解码,可以作为问题近似最优解。

鲁棒性
鲁棒是Robust的音译,也就是健壮和强壮的意思。它也是在异常和危险情况下系统生存的能力。比如说,计算机软件在输入错误、磁盘故障、网络过载或有意攻击情况下,能否不死机、不崩溃,就是该软件的鲁棒性。所谓“鲁棒性”,也是指控制系统在一定(结构,大小)的参数摄动下,维持其它某些性能的特性。根据对性能的不同定义,可分为稳定鲁棒性和性能鲁棒性。以闭环系统的鲁棒性作为目标设计得到的固定控制器称为鲁棒控制器。


余弦相似度
两个向量间的余弦值可以通过使用欧几里得点积公式求出:

给定两个属性向量,A和B,其余弦相似性θ由点积和向量长度给出,如下所示:

这里的分别代表向量A和B的各分量。
给出的相似性范围从-1到1:-1意味着两个向量指向的方向正好截然相反,1表示它们的指向是完全相同的,0通常表示它们之间是独立的,而在这之间的值则表示中间的相似性或相异性。
对于文本匹配,属性向量A和B通常是文档中的词频向量。余弦相似性,可以被看作是在比较过程中把文件长度正规化的方法。
在信息检索的情况下,由于一个词的频率(TF-IDF权)不能为负数,所以这两个文档的余弦相似性范围从0到1。并且,两个词的频率向量之间的角度不能大于90°。


ELM(Extreme Learning Machine, ELM)
在这里插入图片描述

极限学习机或“超限学习机”是一类基于前馈神经网络(Feedforward Neuron Network, FNN)构建的机器学习系统或方法,适用于监督学习和非监督学习问题 。
ELM在研究中被视为一类特殊的FNN,或对FNN及其反向传播算法的改进,其特点是隐含层节点的权重为随机或人为给定的,且不需要更新,学习过程仅计算输出权重 。
传统的ELM具有单隐含层,在与其它浅层学习系统,例如单层感知机(single layer perceptron)和支持向量机(Support Vector Machine, SVM)相比较时,被认为在学习速率和泛化能力方面可能具有优势 [2] 。ELM的一些改进版本通过引入自编码器构筑或堆叠隐含层获得了深度结构,能够进行表征学习 。
ELM的应用包括计算机视觉和生物信息学,也被应用于一些地球科学、环境科学中的回归问题

import numpy as np
import matplotlib.pyplot as plt
 
def sigmoid(a, b, x):
   '''
   定义Sigmoid函数: g(z) = 1/(1+e^-(ax+b))
   '''
   return 1.0/(1+np.exp(-1.0*(x.dot(a)+b)))
    
def ELM_prototype(X, T, C, n, L):
   '''
   回归问题的ELM标准算法
   变量:X - 输入数据;样本数x特征数(N*n)
          :H - 输出矩阵;样本数x隐含层节点数(N*L)
          :T - 学习目标;样本数x输出层节点数(N*M)
          :C - 正则化系数
   '''
   # 随机初始化
   a = np.random.normal(0, 1, (n, L))
   b = np.random.normal(0, 1)
   # 使用特征映射求解输出矩阵
   H = sigmoid(a, b, X)
   # 计算输出权重和输出函数
   HH = H.T.dot(H); HT = H.T.dot(T)
   beta = np.linalg.pinv(HH+np.identity(L)/C).dot(HT)
   Fl = H.dot(beta)
   # 返回计算结果
   return beta, Fl
# 测试:构造输入值和训练目标(输入变量n=2; 输出变量m=1)
x1 = np.linspace(1, 20, 150)
x2 = np.linspace(-5, 5, 150)
X = np.vstack([x1, x2]).T
T = np.sin(x1*x2/(2*np.pi))+np.random.normal(0, 0.2, 150)
# 使用ELM算法进行学习(隐含层节点数L=100; 正则化参数C=1e5)
beta, Fl = ELM_prototype(X, T, C=1e5, n=2, L=100)
# 绘制学习结果
plt.plot(x1, T, lw=1.5, label='Training goal')
plt.plot(x1, Fl, lw=3, label='ELM output')
plt.legend()

Siamese network
孪生神经网络
简单来说,Siamese network就是“连体的神经网络”,神经网络的“连体”是通过共享权值来实现的,如下图所示。
在这里插入图片描述
左右两边的神经网络相同,可以分析两个输入的相似度,例如,在两边已经训练好了的人脸识别网络中,输入两张人物的图片,就可以判断输入的两个人物是否为同一个人
应用
nlp(自然语言处理)&cv领域都有很多应用。
1)前面提到的词汇的语义相似度分析,QA中question和answer的匹配,签名/人脸验证。
2)手写体识别也可以用siamese network,网上已有github代码。
3)kaggle上Quora的question pair的比赛,即判断两个提问是不是同一问题,冠军队伍用的就是n多特征+Siamese network,知乎团队也可以拿这个模型去把玩一下。
在图像上,基于Siamese网络的视觉跟踪算法也已经成为热点《Fully-convolutional siamese networks for object tracking》。

若两边的神经网络不一样,则被称为伪孪生神经网络-pseudo-siamese network


k-means(k-means clustering algorithm)
k均值聚类算法是一种迭代求解的聚类分析算法,其步骤是随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。聚类中心以及分配给它们的对象就代表一个聚类。每分配一个样本,聚类的聚类中心会根据聚类中现有的对象被重新计算。这个过程将不断重复直到满足某个终止条件。终止条件可以是没有(或最小数目)对象被重新分配给不同的聚类,没有(或最小数目)聚类中心再发生变化,误差平方和局部最小。


协同过滤
协同过滤简单来说是利用某兴趣相投、拥有共同经验之群体的喜好来推荐用户感兴趣的信息,个人通过合作的机制给予信息相当程度的回应(如评分)并记录下来以达到过滤的目的进而帮助别人筛选信息,回应不一定局限于特别感兴趣的,特别不感兴趣信息的纪录也相当重要。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值