机器学习里的 kernel 是指什么

机器学习算法之旅 - 文章 - 伯乐在线
& 机器学习算法之旅
在理解了我们需要解决的之后,我们可以思考一下我们需要收集什么数据以及我们可以用什么算法。本文我们会过一遍最流行的机器学习算法,大致了解哪些方法可用,很有帮助。
机器学习领域有很多算法,然后每种算法又有很多延伸,所以对于一个特定问题,如何确定一个正确的算法是很困难的。本文中我想给你们两种方法来归纳在现实中会遇到的算法。
根据如何处理经验、环境或者任何我们称之为输入的数据,算法分为不同种类。机器学习和人工智能课本通常先考虑算法可以适应的学习方式。
这里只讨论几个主要的学习风格或学习模型,并且有几个基本的例子。这种分类或者组织的方法很好,因为它迫使你去思考输入数据的角色和模型准备的过程,然后选择一个最适合你的问题的算法,从而得到最佳的结果。
监督学习:输入数据被称为训练数据,并且有已知的结果或被标记。比如说一封邮件是否是垃圾邮件,或者说一段时间内的股价。模型做出预测,如果错了就会被修正,这个过程一直持续到对于训练数据它能够达到一定的正确标准。问题例子包括分类和回归问题,算法例子包括逻辑回归和反向神经网络。
无监督学习:输入数据没有被标记,也没有确定的结果。模型对数据的结构和数值进行归纳。问题例子包括Association rule learning和聚类问题,算法例子包括 Apriori 算法和K-均值算法。
半监督学习:输入数据是被标记的和不被标记的数据的混合,有一些预测问题但是模型也必须学习数据的结构和组成。问题例子包括分类和回归问题,算法例子基本上是无监督学习算法的延伸。
增强学习:输入数据可以刺激模型并且使模型做出反应。反馈不仅从监督学习的学习过程中得到,还从环境中的奖励或惩罚中得到。问题例子是机器人控制,算法例子包括Q-learning以及Temporal difference learning。
当整合数据模拟商业决策时,大多数会用到监督学习和无监督学习的方法。当下一个热门话题是半监督学习,比如图像分类问题,这中问题中有一个大的数据库,但是只有一小部分图片做了标记。增强学习多半还是用在机器人控制和其他控制系统的开发上。
算法相似性
算法基本上从功能或者形式上来分类。比如,基于树的算法,神经网络算法。这是一个很有用的分类方式,但并不完美。因为有许多算法可以轻易地被分到两类中去,比如说Learning Vector Quantization就同时是神经网络类的算法和基于实例的方法。正如机器学习算法本身没有完美的模型一样,算法的分类方法也没有完美的。
在这一部分我列出了我认为最直观的方法归类的算法。我并没有穷尽算法或者分类方法,但是我想对于让读者有一个大致了解很有帮助。如果有你了解的我没有列出来,欢迎留言分享。现在我们开始!
Regression
Regression(回归分析)关心的是变量之间的关系。它应用的是统计方法,几个算法的例子包括:
Ordinary Least Squares
Logistic Regression
Stepwise Regression
Multivariate Adaptive Regression Splines (MARS)
Locally Estimated Scatterplot Smoothing (LOESS)
Instance-based Methods
Instance based learning(基于实例的学习)模拟了一个决策问题,所使用的实例或者例子是对模型非常重要的。这种方法对现有数据建立一个数据库然后把新数据加进去,再用一个相似性测量方法从而在数据库里找出一个最优匹配,进行一个预测。由于这个原因,这种方法也被称为胜者为王方法和基于内存的方法。现在关注的焦点在存储数据的表现形式和相似性测量方法。
k-Nearest Neighbour (kNN)
Learning Vector Quantization (LVQ)
Self-Organizing Map (SOM)
Regularization Methods
这是一个对其他方法的延伸(通常是回归方法),这个延伸对越简单的模型越有利,并且更擅长归纳。我在这里列出它是因为它的流行和强大。
Ridge Regression
Least Absolute Shrinkage and Selection Operator (LASSO)
Elastic Net
Decision Tree Learning
Decision tree methods(决策树方法)建立了一个根据数据中实际值决策的模型。决策树用来解决归纳和回归问题。
Classification and Regression Tree (CART)
Iterative Dichotomiser 3 (ID3)
Chi-squared Automatic Interaction Detection (CHAID)
Decision Stump
Random Forest
Multivariate Adaptive Regression Splines (MARS)
Gradient Boosting Machines (GBM)
Bayesian method(贝叶斯方法)是在解决归类和回归问题中应用了贝叶斯定理的方法。
Naive Bayes
Averaged One-Dependence Estimators (AODE)
Bayesian Belief Network (BBN)
Kernel Methods
Kernel Method(核方法)中最有名的是Support Vector Machines(支持向量机)。这种方法把输入数据映射到更高维度上,是的一些归类和回归问题更容易建模。
Support Vector Machines (SVM)
Radial Basis Function (RBF)
Linear Discriminate Analysis (LDA)
Clustering Methods
Clustering(聚类),本身就形容了问题和方法。聚类方法通常是由建模方式分类的。所有的聚类方法都是用统一的数据结构来组织数据,使得每组内有最多的共同点。
Expectation Maximisation (EM)
Association Rule Learning
Association rule learning(联合规则学习)是用来对数据间提取规律的方法,通过这些规律可以发现巨量多维空间数据之间的联系,而这些重要的联系可以被组织拿来使用。
Apriori algorithm
Eclat algorithm
Artificial Neural Networks
Artificial Neural Networks(人工神经网络)是从生物神经网络的结构和功能得到启发的。它属于模式匹配一类,经常被用于回归和分类问题,但是它存在上百个算法和变种组成。其中有一些是经典流行的算法(我把深度学习拿出来单独讲):
Perceptron
Back-Propagation
Hopfield Network
Self-Organizing Map (SOM)
Learning Vector Quantization (LVQ)
Deep Learning
Deep Learning(深度学习)方法是人工神经网络的一种现代的更新。相比传统的神经网络,它有更多更复杂的网络构成,许多方法都是关心半监督学习,这种学习的问题中有很大的数据,但是其中很少是被标记的数据。
Restricted Boltzmann Machine (RBM)
Deep Belief Networks (DBN)
Convolutional Network
Stacked Auto-encoders
Dimensionality Reduction
Dimensionality Reduction(维度缩减),像聚类方法一样,追求和利用数据中的统一的结构,但是它用更少的信息来对数据做归纳和形容。这对于对数据进行可视化或者简化数据很有用。
Principal Component Analysis (PCA)
Partial Least Squares Regression (PLS)
Sammon Mapping
Multidimensional Scaling (MDS)
Projection Pursuit
Ensemble Methods
Ensemble methods(组合方法)由许多小的模型组成,这些模型经过独立训练,做出独立的结论,最后组成一个总的预测。很多研究集中在使用什么模型以及这些模型怎么被组合起来。这是一个非常强大且流行的技术。
Bootstrapped Aggregation (Bagging)
Stacked Generalization (blending)
Gradient Boosting Machines (GBM)
Random Forest
这是一个用组合方法进行拟合的例子(来自维基),每个消防法用灰色表示,最后合成的最终预测是红色的。
这趟机器学习算法之旅意在让你对有什么算法和关联算法的一些工具给你一个总体了解。
下面是一些其他资源, 请不要觉得太多,了解越多算法对你越有好处,但是对某些算法有深层次的了解也会很有用。
: 这是维基上的资源,虽然很全,但我认为分类不是很好。
: 这也是在维基上的资源,比上面的略好一点,用字母排序。
: 机器学习算法的R语言拓展包,看看对于你了解别人都在用什么比较好。
: 这是发表的文章(),现在是一本书(),包括了最流行的数据挖掘算法。另一个基础的算法列表,这里列出的算法少很多,有助于你深入学习。
我希望你觉得这趟旅行对你有意,如果有任何问题或建议,都欢迎留言。
关于作者:
可能感兴趣的话题
关于伯乐在线博客
在这个信息爆炸的时代,人们已然被大量、快速并且简短的信息所包围。然而,我们相信:过多“快餐”式的阅读只会令人“虚胖”,缺乏实质的内涵。伯乐在线内容团队正试图以我们微薄的力量,把优秀的原创文章和译文分享给读者,为“快餐”添加一些“营养”元素。
新浪微博:
推荐微信号
(加好友请注明来意)
– 好的话题、有启发的回复、值得信赖的圈子
– 分享和发现有价值的内容与观点
– 为IT单身男女服务的征婚传播平台
– 优秀的工具资源导航
– 翻译传播优秀的外文文章
– 国内外的精选文章
– UI,网页,交互和用户体验
– 专注iOS技术分享
– 专注Android技术分享
– JavaScript, HTML5, CSS
– 专注Java技术分享
– 专注Python技术分享
& 2017 伯乐在线深度 | 软硬兼施:英特尔开发者论坛上都谈到了哪些机器学习?
选自 Intel
机器之心编译
参与:吴攀、杜夏德、李亚洲
当地时间 8 月 16-18 日,英特尔正在美国旧金山举办其年度开发者论坛(IDF:Intel Developer Forum)。论坛的第一天,英特尔就谈到了「融合现实(merged reality)」、自动驾驶、智慧城市、物联网等各方面布局和技术。机器之心在本文中对英特尔今天谈到的一些机器学习方面的内容进行了盘点,内容涵盖英特尔的机器学习硬件、软件、整体架构和长期规划。本文涵盖的 PPT 原文件可点击文后「阅读原文」下载。
本文目录:
一、FPGA 的压缩应用
二、英特尔架构上的深度学习框架和优化路径
三、英特尔 Xeon Phi 如何并行化神经网络(xNNs)
四、在 Apache Spark 上加速机器学习
五、在 Apache Spark 上为分布式学习建立端到端通道
一、FPGA 的压缩应用
演讲者:Suchit Subhaschandra
二、英特尔架构上的深度学习框架和优化路径
Andres Rodriguez – 解决方案架构师,英特尔数据中心组
Ravi Panchumarthy – 系统工程师,英特尔数据中心组
Elvis Jones – 解决方案架构师,Amazon Web Services
演讲流程:
深度学习和框架概览
英特尔 Math Kernel Library (MKL) 和 MKL-DNN 中的优化
英特尔在 Amazon Web Services(AWS)上优化过的框架
深度学习和框架概览
P3-P12 介绍了深度学习可以完成的多种任务,包括:
分类:给图片做标签
检测:检测和标注物体
语义分割:标注每个像素
自然语言目标检索:比如查询图片中「右边的人」
视觉和文本问答
视觉运动控制
语音检测:比如英语和汉语普通话语音检测可以使用同样的架构&
问答自然语言理解
个人助理:Siri、Amazon Echo、Cortana、Google Now 等
P13:深度学习工具
深度学习的顶级框架包括:Caffe、DL4J、TensorFlow、Torch、MXNET、H2O.ai、Spark、Theano 等等
深度学习编程语言包括:Python、C/C++、R、Go、Lua 等等
英特尔 Math Kernel Library (MKL) 和 MKL-DNN 中的优化
P15:深度学习的多样化
网络有多种拓扑结构:常用于 NLP/ASR 的循环神经网络、GoogLeNet 的 DAG、记忆网络……
但也有一些定义良好的构造模块:常用于图像识别任务的卷积模块、用于循环网络层(可能是稀疏的)的 GEMM、ReLU、tanh、softmax
P16:英特尔 Math Kernel 库(MKL)
优化过的 AVX-2 和 AVX-512 指令
英特尔 Xeon 和 Xeon Phi 处理器
支持所有常见类型的层
即将到来:基于 Winograd 的卷积
P17:英特尔深度学习软件堆
P18:最基本的卷积
P19:对缓存友好的卷积
P20:为英特尔架构优化过的 Caffe
保留了 BVLC Caffe 的所有优点,另外还整合了英特尔 MKL 2017,还支持多节点分布式训练
英特尔在 Amazon Web Services (AWS)上优化过的框架
AWS 在高性能计算上有很多优势,包括价格灵活、速度快等等。本幻灯片的 21-48 页介绍了英特尔在亚马逊 AWS 上优化框架的步骤和工具。
三、英特尔 Xeon Phi 如何并行化神经网络(xNNs)
演讲者:英特尔研究科学家 Nadathur Satish
演讲流程:
1.来自 HPC(高性能计算)的经验:并行架构的代码现代化
2.深度学习/机器学习介绍
3.在英特尔 Xeon Phi 处理器上加速深度学习
介绍英特尔 Xeon Phi&
为深度学习优化构造块
P4:HPC 的收敛性和机器学习
传统(HPC)&
新兴(机器学习)
都需要大量的计算。
P5-P7:深度学习
P8:深度网络的多样化
网络有多种拓扑结构:常用于 NLP/ASR 的循环神经网络、GoogLeNet 的 DAG、记忆网络……
但也有一些定义良好的构造模块:常用于图像识别任务的卷积模块、用于循环网络层(可能是稀疏的)的 GEMM、ReLU、tanh、softmax
P9:深度学习概览
应用:图像理解、视频摘要、语音/NLP 理解
框架:Caffe、Theano、Torch、TensorFlow、其他
神经网络拓扑结构:卷积神经网络、循环神经网络、长短记忆网络、强化学习
构造块:SGEMM、Convolution、FFT/Winograd、SSSP/Astar、SpGEMM
架构:英特尔 Xeon、英特尔 Xeon Phi、FPGA、Fabric、Memory HBM/NVM
P11:英特尔 Xeon Phi 处理器:让训练时间更短
突破高度并行性能:
每个插槽速度上升到 6 SGEMM &TFLOPs。
1.38 倍更好的扩展效率,多节点的训练需要更少的时间。
消除插入板 PCIe 卸载瓶颈和利用上的限制。
通过集成移除障碍:
集成的英特尔 Omni-Path 构造(双端口; 50 GB/s)增加了性价比,降低了深度神经网络的通信延迟。
更好的可编程性:
与英特尔 Xeon 处理器二进制兼容
开放的标准、库和框架
P12:英特尔 Xeon Phi 主要的架构特性
P13:在英特尔 Xeon Phi 上执行并行的关键
显露应用并行:
架构有很多的并行
能使用 OpenMP(#pragma omp parallel, #pragma omp simd)表示并行
没有万能方法,需要理解应用
P14:使用缓存改进带宽和延迟特性
主要优化策略:blocking/tiling,prefetching(模块化,预抓取)
P16:神经网络中的卷积
P17-P23:讲解了一个卷积层中的计算
输入图像→内核/过滤器→输出图像
P24:一个卷积层中的计算
大量的并行
P25:需要一个独立的优化实施
P26:一张图片/输入的最基本的卷积回路
在 AVX-512 中,使用混合乘-加指令
P27:最基本的回路带宽限制
需要对回路模块化
P28:缓存模块化
将 3D 点积分解成更小的点积序列
在一个时间点上计算部分输出
P29-P32:向量化和数据布局
问题:数据布局通常是特定时间点的特征映射——聚集、较差的预取表现。
解决方案:布局输入、输出、权重以在 &S = SIMD 宽度特征映射组上获取带有内部维度的 SOA 结构
P33-P35:Threading 和工作分割
如果可用,使用独立图像的 minibatch。如果 minibatch = 1 怎么办?
在线程之间分割输出空间(输出像素、输出特征映射)
已经使用了一些并行进行 blocking、unrolling(模块化、展开)
P36:额外的优化
展开回路从而展现指令级的并行
为 Kernels 增加软件预取支持
可能要为指定卷基层调整策略(如果输出特征数量太小,难以向量化怎么办,等等)
JIT 方法:能使用 Just-in-Time(即时)汇编方法进行专门化
P37:在英特尔 Xeon Phi 7250 @ 1.2 GHz 上的结果
上表:单核,minibatch 大小:256,内部卷积
下表:64 核,minibatch 大小:256,内部卷积
P38:在英特尔 Xeon Phi 7250 上的结果,peak wrt. 1.4 GHz, 6.1 TFLOPS, SGEMM: ~4.5 TFLOPS
P40:GEMMs 有偏斜外形(skewed shapes)
关键特性:
minibatch 维度通常较小(64/128)
其它维度大约有 1000 个
P41:优化小型 SGEMMs
为什么不使用标准的 BLAS 库
为 HPC 设计的BLAS 库——大型矩阵,以行/列为主
为了内存访问的效率,在运行过程中进行数据架构分块:在 BLAS 库中的副本开销(overhead)牺牲了小矩阵的性能
使用分块数据布局(类似于优化过的卷积),而且在块级上使用细粒性并行
P42:GEMM 使用案例:RNN
P43:英特尔 MKL 2017 引进了 CNN primitives
为卷积和深度神经网络优化基本操作
这些在 Xeon E5-2699v4 上能带来 12 倍的提升
利用 Xeon Phi 的更多的计算资源
P45-46:总结以及下一步
深度学习 kernels 的表现从 HPC 类型的性能优化上获益良多
线程化、向量化、模块化和数据布局改变是在高度并行架构上进行性能优化的关键
通过进行这些优化,能得到 12 倍的性能差异
将你的知识应用到其他 kernel 上,Winograd、FFT,或者深度学习中最新进展上。
四、在 Apache Spark 上加速机器学习
Radhika Rangarajan:英特尔集团高级项目经理
Yuhao Yang:英特尔集团软件工程师
演讲流程:
机器学习和英特尔所关注的领域
在 Apache Spark 上横向扩展机器学习
用于分布式机器学习的框架/架构
Spark 上的深度学习
用例、挑战、机遇
P3-P4:机器学习和英特尔所关注的领域
基础分类:英特尔关注人工智能和数据分析两大块,而机器学习是两者之间的一个交集
人工智能:感知、学习、推理、行动、不需要专门编程就能适应真实世界
数据分析:在任意数量的不同类型的数据上构建能够进行描述性、交互式或预测性分析的表征、查询或模型
感知理解:检测音频或视觉数据中的模式
机器学习:使用学习算法从数据中构建模型的计算方法(包括监督式、无监督、半监督和强化等模式)
深度学习:由神经网络所启发的算法,带有多层神经元,可以连续地学习复杂表征
卷积神经网络(CNN):在图像识别上尤其高效的深度学习拓扑结构
P5:端到端的深度学习流程
数据获取→数据聚合→数据监护→数据标注→模型开发→模型性能→模型部署→模型评分
P6:为什么现在要用机器学习?
更大的数据:高分辨率的对象的大小可达到 50,000,000 KB
更好的硬件:2015 年时每 GB 的成本已经降到了 0.03 美元
更智能的算法:学习多层前馈神经网络的理论改进带来了更高的准确度;用于非凸曲线优化的新数学技术带来了更好的学习算法
P7:英特尔为什么要做机器学习?
P8:英特尔的机器学习策略
从底层到高层依次为:
英特尔的芯片:Xeon、Xeon Phi、Xeon+FPGA、SSD、3D Xpoint、Omni-Path 架构
英特尔的 Math Kernel 和 Data Analytics Acceleration 库:包含线性代数、快速傅立叶变换、随机数生成器、汇总统计、数据拟合、机器学习算法
深度学习架构:Spark、Caffe、Theano、Torch 等
受信任的分析平台;开源、ISV、SI、学术开发推广
解决方案:ADAS、健康和生命科学、能源、零售
P9:使用 Apache Spark 的机器学习
1.Spark ML/MLlib:Spark 之上的通用机器学习算法
隐藏分布式数据和查询以及扩展的复杂性
利用 Spark 生态系统(tungsten、数据集、数据框架)
2.社区建设的动力
来自 75 个组织的 200 多位个人为机器学习库提供了 2000 多个补丁
围绕 Spark 机器学习的生态系统正在成长
Spark ML 使用趋势:更好的流程系统、为 Python 和 R 提供特有功能、新的算法和更好的扩展性
P10:英特尔的重点:Apache Spark 上的分布式机器学习
在 Spark 上横向扩展机器学习算法:稀疏 logistic 回归、主题建模、稀疏 K-均值、大规模词嵌入,等
对分布式机器学习的框架/架构支持:参数(Parameter)服务器上的联合协作
在 Spark 上的分布式(深度)神经网络支持:深度卷积神经网络
P11-12:在 Apache Spark 上横向扩展机器学习
例如 word2vec 数据扩展(越高越好):高达 10 倍的扩展提升,减少了 40% 的内存消耗!
P13:主题建模
自动推理一个文档集中所讨论的主题
只观察文档,主题结构通过自动推理得到
隐含狄利克雷分布(LDA):比例参数→每个文档的主题参数→每个词的主题分配→被观察的词←主题←主题参数
P14:主题建模
许多顶级的互联网公司使用其进行文本挖掘和主题建模
全功能覆盖
大批量计算或在线模型
训练、预测、分析
P15:用于分布式机器学习的框架/架构
P16:稀疏数据无处不在
数据源:电影评分、购买记录……
特征工程:
NLP:CountVectorizer, HashingTF
分类:OneHotEncoder
图像、视频
P17:Apache Spark 的稀疏机器学习
Spark 软件包中包含了支持许多类型的稀疏数据的算法优化
P18:Apache Spark 的稀疏机器学习
K-均值:扩展性提升,移除了单个节点的内存限制
线性方法(logistic 回归、线性 SVM 等):紧凑的梯度和权重
HashVector:O(1) 更新
MaxAbsScaler:维持数据稀疏性
NaiveBayes
P19:分布式机器学习的参数服务器支持
网络级机器学习的核心架构支持
横向扩展框架以支持复杂的模型和训练
非常大范围的模型/图形(数十亿个独特的特征):利用固有的数据稀疏性
分布式训练的可能的异步模型:BSP vs. SSP vs. 异步SGD 等
并行聚合 & 参数更新
粗粒度的容错方案
P20:参数服务器
对带有线性代数的算法的成功支持:
logistic 回归中的梯度和权重
LDA 中的词-主题分布/分配
神经网络中的权重 & 偏置
更多算法正在开发中,欢迎加入……
P21:Spark 上的深度学习
P22:分布式神经网络
多层感知器(MLP):全连接的、前馈的
深度学习:CNN、自编码器、RBM 等
训练一个神经网络:
①驱动器(driver)向每个工作器(worker)广播参数(权重 & 偏置)
②工作器处理来自训练集的 B 记录的下一批
③每个任务(运行在工作器上)从其数据分区中对记录进行采样
④每个任务计算前向和反向传播的通过
驱动器聚合梯度 G
驱动器更新参数(权重 & 偏置)
P23:深度(卷积)神经网络
带有基于层的接口的直觉 API
构建于标准大数据平台之上:易于利用你已有的集群
早期就能接触到行业用户和社区:根据真实世界用例的反馈而进化,社区版本与 Spark MLP 兼容
目标是全功能覆盖:自动编码器、稀疏编码器、带有最大池化和平均池化的卷积、RBM(限制玻尔兹曼机)
带有流行的数据集/模型的基准:Mnist、AlexNet on ImageNet、CIFAR 10
易于将 MKL(Math Kernel 库)集成到英特尔架构加速上
P24-25:用例、挑战、机遇
用例:银行业的欺诈检测
全世界欺诈程度都在上升
领先的支付系统不得不每天处理越来越多的交易
对先进的实时欺诈检测系统有明确的需求
P26:为什么要用机器学习进行欺诈检测?
机器学习模型可以扩展以适应客户的细微差别
专业对手使用复杂的基于机器的攻击
人类生成的规则给好的客户带来麻烦
欺诈案有长尾的分布
P27:聚合到一起
端到端的机器学习流程:
大数据管理:在线、移动或数据库,十亿级的支持
特征管理:分层统计,分析,特征衍生和存储
特征工程流程:带有 imputor 的丰富函数,重采样、WoE 等,开发的许多和贡献
模型训练流程:网格搜索、模式集合、交叉验证;DNN/Spark 上的多层感知器
P28:挑战、机遇、未来路线图
加入更多算法和新函数:深度学习、自然语言处理、XGBoost
提高容量和可扩展性:分布式模型、先进的数据格式、大规模数据训练
行业和开源社区之间的桥梁
趋势:Spark 上流行的深度学习框架:Caffe、TensorFlow 等
五、在 Apache Spark 上为分布式学习建立端到端通道
&本文由机器之心编译,转载请联系本公众号获得授权。
?------------------------------------------------
加入机器之心(全职记者/实习生):
投稿或寻求报道:
广告&商务合作:
点击阅读原文,下载原文 PPT↓↓↓
本篇 SIGIR2017 的满分论文则首次提出将两方面流派的数据模型通过一种对抗训练的方式统一在一起,使得两方面的模型能够相互提高,最终使得检索到的文档更加精准。
全球程序员们的狂欢盛宴北京站将在北京时间 6 月 24 日-25 日拉开帷幕!
本课程从计算机视觉的基础概念开始,再在奠定了基本分类模型、神经网络和优化算法的基础后,李飞飞等人重点详细介绍了 CNN、RNN、GAN、RL 等深度模型在计算机视觉上的应用。
谷歌发布了一个名为 Tensor2Tensor(T2T)的 TensorFlow 开源系统,希望能够以此提高机器学习社区的研究和开发速度,其中包含了谷歌近期提出的多个最新模型。
谷歌最近提出的全 Attention 机器翻译模型引起了人们的关注,Github 上的一个项目给出了 Transformer 模型的 TensorFlow 实现,在官方代码公布之前共享了自己的代码。
儿童节80后的童鞋们陆续迈进而立的门槛,童年不再。希望忙于奔波事业和家庭的他(她)们还有片刻的闲暇,回忆那段
青浦就那样,唯我们不同热点 \/ 美食 \/ 折扣 \/ 资讯 \/ 活动 \/ 生活微信号:qp
◆ 督导易,!
为博红颜欢 洗劫手机店 \\n罗定一男子为送女友礼物盗窃50多台手机被警方抓获
经过前期个人申报、面试以及现任会部长团、中立第三方集体评分三个环节,校红十字会学生分会第28届会部长团的换届工作已基本完成,现将第28届会部长团的拟任职情况进行公示。
人与科技的美好关系
感谢您的支持,请按照如下步骤取消屏蔽ABBAO的广告():机器学习(12)
先给个定义:核函数K(kernel function)就是指K(x, y) = ,其中x和y是n维的输入值,f(·) 是从n维到m维的映射(通常而言,m&&n)。是x和y的内积(inner product),严格来说应该叫欧式空间的标准内积,也就是很多人常说的点积(dot product)。
光看这一段还是不明白kernel是什么,用来干什么的...对吧?不要急。一个好的知识分享者是不会把一篇空洞的定义扔下就不管的,TA会告诉你这个概念的intuition,然后给你举个小小的栗子,最后告诉你几个应用场景。Andrew Ng的Machine Learning为什么会成为一门现象级的MOOC?原因之一就是因为他除了是个学术上的大神,也同样是个极有质素的知识分享者。所以我要学习他。
好了,intuitively(这也模仿得太生硬了吧…),要计算,我们要先分别计算f(x)和f(y),然后再求它们的内积。上面的定义里也说了,经过映射后的x和y,维数大大增加,计算内积的成本可能会非常之大,而且在高位空间费力牛劲儿地计算内积,内积又是一个scalar,相当于说又把我们的计算从高维空间拉回到一维空间!所以我们特别想要一个“简便运算法”,帮助我们不需要奔向高维空间就能在家门口计算得到想要的内积。这时候该轮到我们的猪脚——kernel登场了,它能帮我们做到这一点。
举个小小栗子。
令 x = (x1, x2, x3, x4); y = (y1, y2, y3, y4);
令 f(x) = (x1x1, x1x2, x1x3, x1x4, x2x1, x2x2, x2x3, x2x4, x3x1, x3x2, x3x3, x3x4, x4x1, x4x2, x4x3, x4x4); f(y)亦然;
令核函数 K(x, y) = ()^2.
接下来,让我们带几个简单的数字进去看看是个什么效果:x = (1, 2, 3, 4); y = (5, 6, 7, 8). 那么:
f(x) = ( 1, 2, 3, 4, 2, 4, 6, 8, 3, 6, 9, 12, 4, 8, 12, 16) ;
f(y) = (25, 30, 35, 40, 30, 36, 42, 48, 35, 42, 49, 56, 40, 48, 56, 64) ;
= 25+60+105+160+60+144+252+384+105+252+441+672+160+384+672+1024
好累,对不对?可谁让f(·)把四维空间的数据映射到十六维空间里呢?
如果我们用核函数呢?
K(x, y) = (5+12+21+32)^2 = 70^2 = 4900.
就是这样!
所以现在你看出来了吧,kernel其实就是帮我们省去在高维空间里进行繁琐计算的“简便运算法”。甚至,它能解决
无限维空间
无法计算的问题!因为有时f(·)会把n维空间映射到无限维空间去,对此我们常常束手无策,除非是用kernel,尤其是RBF kernel(K(x,y) = exp(-||x-y||^2) )。
在有kernel之前,做machine learning的典型的流程应该是:data --& features --& learning algorithm,但kernel给我们提供了一个alternative,那就是,我们不必定义从data到feature的映射函数,而是可以直接kernel(data) --& learning algorithm,也可以是data --& features --& kernel(features) --& learning algorithm。
所以虽然我们看到kernel常被应用在SVM(SVM中的kernel应该是后一种用法,后文再说),但其实要用到内积的learning algorithm都可以使用kernel。“用到内积的learning algorithm”其实并不少见,不信你可以想一想最普通不过的linear classifier/regressor有没有一个步骤是计算特征向量(feature vectors)。
那么kernel在SVM究竟扮演着什么角色?
初学SVM时常常可能对kernel有一个误读,那就是误以为是kernel使得低维空间的点投射到高位空间后实现了线性可分。其实不然。这是
把kernel和feature space transformation
混为了一谈
。(这个错误其实很蠢,只要你把SVM从头到尾认真推导一遍就不会犯我这个错。)
还是简单回顾一下吧。SVM就是 y = w'·φ(x) + b,其中φ(x)是特征向量(feature vectors),并且是φ(x)使得数据从低维投射到高位空间后实现了线性可分。而kernel是在解对偶问题的最优化问题时,能够使φ(x)更方便地计算出来,特别是φ(x)维数很高的时候。
------------------------------正文完,附上几个链接--------------------------------
kernel的种类繁多,如果想详细了解,可以看看这个帖子
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:2085621次
积分:22368
积分:22368
排名:第288名
原创:248篇
转载:759篇
评论:138条
(4)(6)(2)(27)(6)(3)(7)(1)(3)(5)(1)(2)(1)(6)(2)(4)(3)(3)(7)(5)(28)(4)(18)(20)(12)(6)(6)(5)(9)(5)(5)(7)(7)(7)(1)(2)(7)(10)(23)(5)(44)(31)(29)(39)(93)(18)(14)(72)(7)(28)(48)(41)(25)(14)(1)(4)(11)(9)(14)(7)(7)(8)(5)(1)(24)(20)(18)(7)(16)(7)(41)(13)(9)

我要回帖

 

随机推荐