2

监督学习与无监督学习

 2 years ago
source link: https://www.biaodianfu.com/supervised-learning-and-unsupervised-learning.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

在机器学习或者人工智能领域,人们首先会考虑算法的学习方式。在机器学习领域, 主要分为:监督学习,非监督学习,半监督学习和强化学习。监督学习主要用于回归和分类;半监督学习主要用于分类,回归,半监督聚类;无监督学习主要用于聚类。

machine-learning.jpg

监督学习(supervised learning)

监督学习是机器学习的类型,其中机器使用“标记好”的训练数据进行训练,并基于该数据,机器预测输出。标记的数据意味着一些输入数据已经用正确的输出标记。在监督学习中,提供给机器的训练数据充当监督者,教导机器正确预测输出。它应用了与学生在老师的监督下学习相同的概念。监督学习是向机器学习模型提供输入数据和正确输出数据的过程。监督学习算法的目的是找到一个映射函数来映射输入变量(x)和输出变量(y)。在现实世界中,监督学习可用于风险评估、图像分类、欺诈检测、垃圾邮件过滤等。

监督学习是指利用一组已知类别的样本调整分类器的参数,使其达到所要求性能的过程。是从标记的训练数据来推断一个功能的机器学习任务,也就是样本标签打好了。训练数据包括一套训练示例。在监督学习中,每个实例都是由一个输入对象(通常为矢量)和一个期望的输出值(也称为监督信号)组成。监督学习算法是分析该训练数据, 并产生一个推断的功能,其可以用于映射出新的实例。一个最佳的方案将允许该算法来正确地决定那些看不见的实例的类标签。这就要求学习算法是在一种“合理”的方式从一种从训练数据到看不见的情况下形成。

在监督学习中,模型使用标记数据集进行训练,其中模型学习每种类型的数据。训练过程完成后,模型会根据测试数据(训练集的子集)进行测试,然后预测输出。

通过以下示例和图表可以很容易地理解监督学习的工作原理:

supervised-learning.png
  • 首先确定训练数据集的类型
  • 收集/收集标记的训练数据(一般可能需要手动标记)
  • 将训练数据集拆分为训练数据集、测试数据集和验证数据集。
  • 确定训练数据集的输入特征,这些特征应该有足够的知识使模型能够准确地预测输出。
  • 确定适合模型的算法,如支持向量机、决策树等。
  • 在训练数据集上执行算法。有时我们需要验证集作为控制参数,它们是训练数据集的子集。
  • 通过提供测试集来评估模型的准确性。如果模型预测出正确的输出,这意味着我们的模型是准确的。

监督式学习的常见应用场景如分类问题和回归问题。

  • 回归:如果输入变量和输出变量之间存在关系,则使用回归算法。它用于预测连续变量,例如天气预报、市场趋势等。
  • 分类:输出变量是分类时使用分类算法,这意味着有两个类别,例如是 – 否,男性 – 女性,真假等。

常见监督式学习算法有决策树(ID3,C4.5算法等),朴素贝叶斯分类器最小二乘法逻辑回归(Logistic Regression),支持向量机(SVM),K最近邻算法(KNN,K-NearestNeighbor),线性回归(LR,Linear Regreesion),人工神经网络(ANN,Artificial Neural Network),集成学习以及反向传递神经网络(Back Propagation Neural Network)等等。

决策树(Decision Tree)

决策树是一种树形结构,为人们提供决策依据,决策树可以用来回答yes和no问题,它通过树形结构将各种情况组合都表示出来,每个分支表示一次选择(选择yes还是no),直到所有选择 都进行完毕,最终给出正确答案。

决策树(decision tree)是一个树结构(可以是二叉树或非二叉树)。在实际构造决策树时,通常要进行剪枝,这时为了处理由于数据中的噪声和离群点导致的过分拟合问题。剪枝有两种:

  • 先剪枝——在构造过程中,当某个节点满足剪枝条件,则直接停止此分支的构造。
  • 后剪枝——先构造完成完整的决策树,再通过某些条件遍历树进行剪枝。
Decision-Tree.png

朴素贝叶斯分类器(Naive Bayesian Model,NBM)

朴素贝叶斯分类器基于贝叶斯定理及其假设(即特征之间是独立的,是不相互影响的),主要用来解决分类和回归问题。P(A|B) 是后验概率, P(B|A) 是似然,P(A)为先验概率,P(B) 为我们要预测的值。

具体应用有:标记一个电子邮件为垃圾邮件或非垃圾邮件;将新闻文章分为技术类、政治类或体育类;检查一段文字表达积极的情绪,或消极的情绪;用于人脸识别软件。

学过概率的同学一定都知道贝叶斯定理,这个在250多年前发明的算法,在信息领域内有着无与伦比的地位。贝叶斯分类是一系列分类算法的总称,这类算法均以贝叶斯定 理为基础,故统称为贝叶斯分类。朴素贝叶斯算法(Naive Bayesian) 是其中应用最为广泛的分类算法之一。朴素贝叶斯分类器基于一个简单的假定:给定目标值时属性之 间相互条件独立。

Naive-Bayes-Classification.png

最小二乘法(Least squares)

最小均方就是用来求线性回归的。如下图所示,平面内会有一系列点,然后我们求取一条线,使得这条线尽可能拟合这些点分布,这就是线性回归。这条线有多种找法,最小 二乘法就是其中一种。最小二乘法其原理如下,找到一条线使得平面内的所有点到这条线的欧式距离和最小。这条线就是我们要求取得线。

最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的 数据与实际数据之间误差的平方和为最小。最小二乘法还可用于曲线拟合。其他一些优化问题也可通过最小化能量或最大化熵用最小二乘法来表达。

Least-squares.png

逻辑回归(Logistic Regression)

逻辑回归模型是一个二分类模型,它选取不同的特征与权重来对样本进行概率分类,用一个log函数计算样本属于某一类的概率。即一个样本会有一定的概率属于一个类,会有一定 的概率属于另一类,概率大的类即为样本所属类。用于估计某种事物的可能性。

Logistic-Regression.png

支持向量机(SVM)

支持向量机(support vector machine)是一个二分类算法,它可以在N维空间找到一个(N-1)维的超平面,这个超平面可以将这些点分为两类。也就是说,平面内如果存在线性可分的 两类点,SVM可以找到一条最优的直线将这些点分开。SVM应用范围很广。

svm.png

K最近邻算法(KNN,K-NearestNeighbor)

邻近算法,或者说K最近邻(KNN,K-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。KNN算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多 数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。该方法在确定分类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。 KNN方法 在类别决策时,只与极少量的相邻样本有关。由于KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说, KNN方法较其他方法更为适合。

KNN.png

集成学习(Ensemble Learning)

集成学习就是将很多分类器集成在一起,每个分类器有不同的权重,将这些分类器的分类结果合并在一起,作为最终的分类结果。最初集成方法为贝叶斯决策。

集成算法用一些相对较弱的学习模型独立地就同样的样本进行训练,然后把结果整合起来进行整体预测。集成算法的主要难点在于究竟集成哪些独立的较弱的学习模型以及如何把学习结果整合起来。 这是一类非常强大的算法,同时也非常流行。常见的算法包括:Boosting, Bootstrapped Aggregation(Bagging), AdaBoost,堆叠泛化(Stacked Generalization, Blending),梯度推进 机(Gradient Boosting Machine, GBM),随机森林(Random Forest)。

Ensemble-Learning.png

优点

  • 在监督学习的帮助下,模型可以根据先前的经验预测输出。
  • 在监督学习中,我们可以对对象的类别有一个准确的认识。
  • 监督学习模型帮助我们解决各种现实问题,例如欺诈检测、垃圾邮件过滤等。

缺点

  • 监督学习模型不适合处理复杂的任务。
  • 如果测试数据与训练数据集不同,监督学习无法预测正确的输出。
  • 训练需要大量的计算时间。
  • 在监督学习中,我们需要足够的关于对象类别的知识。

无监督学习(unsupervised learning)

无监督学习是一类用于在数据中寻找模式的机器学习技术。无监督学习算法使用的输入数据都是没有标注过的,这意味着数据只给出了输入变量(自变量 X)而没有给出相应的输出变量(因变量)。在无监督学习中,算法本身将发掘数据中有趣的结构。

在监督学习中,系统试图从之前给出的示例中学习。而在无监督学习中,系统试图从给定的示例中直接找到模式。因此,如果数据集被标注过了,这就是一个监督学习问题;而如果数据没有被标注过,这就是一个无监督学习问题。

unsupervised-learning.png

监督机器学习模型在训练数据的监督下使用标记数据进行训练。但是在很多情况下,我们没有标记数据,需要从给定的数据集中找到隐藏的模式。因此,要解决机器学习中的此类案例,我们需要无监督学习技术。无监督学习顾名思义,无监督学习是一种机器学习技术,其中模型不使用训练数据集进行监督。相反,模型本身会从给定数据中找到隐藏的模式和见解。它可以比作在学习新事物时发生在人脑中的学习。

  • 无监督学习有助于从数据中找到有用的见解。
  • 无监督学习与人类通过自己的经验学习思考非常相似,这使得它更接近真正的人工智能。
  • 无监督学习适用于未标记和未分类的数据,这使得无监督学习更加重要。
  • 在现实世界中,我们并不总是有输入数据和相应的输出,因此为了解决这种情况,我们需要无监督学习。

无监督学习是一种机器学习的训练方式,它本质上是一个统计手段,在没有标签的数据里可以发现潜在的一些结构的一种训练方式。它主要具备3个特点:

  • 无监督学习没有明确的目的
  • 无监督学习不需要给数据打标签
  • 无监督学习无法量化效果

下图可以理解无监督学习的工作原理:

unsupervised.png

在这里,我们采用了未标记的输入数据,这意味着它没有分类,也没有给出相应的输出。现在,这些未标记的输入数据被输入机器学习模型以对其进行训练。首先,它将解释原始数据以从数据中找到隐藏的模式,然后应用合适的算法,如 k-means 聚类、决策树等。

一旦应用了合适的算法,该算法就会根据对象之间的相似性和差异性将数据对象分组。

区别与比较

通过跟监督学习的对比来理解无监督学习:

  • 有监督学习方法必须要有训练集与测试样本。在训练集中找规律,而对测试样本使用这种规律。而非监督学习没有训练集,只有一组数据,在该组数据集内寻找规律。
  • 有监督学习的方法就是识别事物,识别的结果表现在给待识别数据加上了标签。因此训练样本集必须由带标签的样本组成。而非监督学习方法只有要分析的数据集的本身,预先没有什么标签。如果发现数据集呈现某种聚集性,则可按自然的聚集性分类,但不予以某种预先分类标签对上号为目的。
  • 非监督学习方法在寻找数据集中的规律性,这种规律性并不一定要达到划分数据集的目的,也就是说不一定要“分类”。
  • 这一点是比有监督学习方法的用途要广。 譬如分析一堆数据的主分量,或分析数据集有什么特点都可以归于非监督学习方法的范畴。
  • 用非监督学习方法分析数据集的主分量与用K-L变换计算数据集的主分量又有区别。后者从方法上讲不是学习方法。因此用K-L变换找主分量不属于无监督学习方法,即方法上不是。而通过学习逐渐找到规律性这体现了学习方法这一点。在人工神经元网络中寻找主分量的方法属于无监督学习方法。
diff.jpg

监督学习和无监督学习之间的主要区别如下:

监督学习 无监督学习
监督学习算法使用标记数据进行训练。 无监督学习算法使用未标记的数据进行训练。
监督学习模型采用直接反馈来检查它是否预测了正确的输出。 无监督学习模型不接受任何反馈。
监督学习模型预测输出。 无监督学习模型发现数据中的隐藏模式。
在监督学习中,输入数据与输出一起提供给模型。 在无监督学习中,仅向模型提供输入数据。
监督学习的目标是训练模型,使其能够在给定新数据时预测输出。 无监督学习的目标是从未知数据集中找到隐藏的模式和有用的见解。
监督学习需要监督来训练模型。 无监督学习不需要任何监督来训练模型。
监督学习可以归类为分类和回归问题。 无监督学习可以归类为聚类和关联问题。
监督学习可用于我们知道输入以及相应输出的情况。 无监督学习可用于只有输入数据而没有相应输出数据的情况。
监督学习模型产生准确的结果。 与监督学习相比,无监督学习模型可能给出的结果不太准确。
监督学习并不接近真正的人工智能,因为在这方面,我们首先为每个数据训练模型,然后只有它才能预测正确的输出。 无监督学习更接近于真正的人工智能,因为它的学习方式类似于孩子通过他的经验学习日常事物。
它包括各种算法,如线性回归、逻辑回归、支持向量机、多类分类、决策树、贝叶斯逻辑等。 它包括聚类、KNN 和 Apriori 算法等各种算法。

发现异常

有很多违法行为都需要”洗钱”,这些洗钱行为跟普通用户的行为是不一样的,到底哪里不一样?

如果通过人为去分析是一件成本很高很复杂的事情,我们可以通过这些行为的特征对用户进行分类,就更容易找到那些行为异常的用户,然后再深入分析他们的行为到底哪里不一样,是否属于违法洗钱的范畴。

通过无监督学习,我们可以快速把行为进行分类,虽然我们不知道这些分类意味着什么,但是通过这种分类,可以快速排出正常的用户,更有针对性的对异常行为进行深入分析。

用户细分

这个对于广告平台很有意义,我们不仅把用户按照性别、年龄、地理位置等维度进行用户细分,还可以通过用户行为对用户进行分类。

通过很多维度的用户细分,广告投放可以更有针对性,效果也会更好。

推荐系统

大家都听过”啤酒+尿不湿”的故事,这个故事就是根据用户的购买行为来推荐相关的商品的一个例子。

比如大家在淘宝、天猫、京东上逛的时候,总会根据你的浏览行为推荐一些相关的商品,有些商品就是无监督学习通过聚类来推荐出来的。系统会发现一些购买行为相似的用户,推荐这类用户最”喜欢”的商品。

无监督学习算法可以进一步分为两类问题:聚类和关联

  • 聚类:聚类是一种将对象分组为聚类的方法,使得具有最多相似性的对象保留在一个组中,并且与另一组的对象具有较少或没有相似性。聚类分析发现数据对象之间的共性,并根据这些共性的存在和不存在对它们进行分类。
  • 关联:关联规则是一种无监督学习方法,用于查找大型数据库中变量之间的关系。它确定在数据集中一起出现的项目集。关联规则使营销策略更加有效。例如购买 X 商品(假设是面包)的人也倾向于购买 Y(黄油/果酱)商品。关联规则的一个典型例子是市场篮子分析。

常见非监督学习算法包括聚类算法、奇异值分解主成分分析(PCA)、SVD矩阵分解、独立成分分析(ICA)、Apriori算法以及K-均值算 法(K-Means)、稀疏自编码(sparse auto-encoder)等等。

聚类算法

聚类算法就是将一堆数据进行处理,根据它们的相似性对数据进行聚类。

聚类,就像回归一样,有时候人们描述的是一类问题,有时候描述的是一类算法。聚类算法通常按照中心点或者分层的方式对输入数据进行归并。所以的聚类算法都试图找到数据的内在结构, 以便按照最大的共同点将数据进行归类。常见的聚类算法包括 k-Means算法以及期望最大化算法(Expectation Maximization, EM)。

聚类算法有很多种,具体如下:中心聚类、关联聚类、密度聚类、概率聚类、降维、神经网络/深度学习。

julei.png

K-均值算法(K-Means)

K-means算法是硬聚类算法,是典型的基于原型的目标函数聚类方法的代表,它是数据点到原型的某种距离作为优化的目标函数,利用函数求极值的方法得到迭代运算的调整规则。K-means 算法以欧式距离作为相似度测度,它是求对应某一初始聚类中心向量V最优分类,使得评价指标J最小。算法采用误差平方和准则函数作为聚类准则函数。K-means算法是很典型的基于距离的 聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。该算法认为簇是由距离靠近的对象组成的,因此把得到紧凑且独立的簇作为最终目标。

K-means.png

主成分分析(Principal Component Analysis,PCA)

主成分分析是利用正交变换将一些列可能相关数据转换为线性无关数据,从而找到主成分。PCA方法最著名的应用应该是在人脸识别中特征提取及数据降维。 PCA主要用于简单学习与可视化中数据压缩、简化。但是PCA有一定的局限性,它需要你拥有特定领域的相关知识。对噪音比较多的数据并不适用。

pca.png

SVD矩阵分解(Singular Value Decomposition)

也叫奇异值分解(Singular Value Decomposition),是线性代数中一种重要的矩阵分解,是矩阵分析中正规矩阵酉对角化的推广。在信号处理、统计学等领域有重要应用。SVD矩阵是一个复杂的实复负数矩阵,给定一个m行、n列的矩阵M,那么M矩阵可以分解为M = UΣV。U和V是酉矩阵,Σ为对角阵。

PCA实际上就是一个简化版本的SVD分解。在计算机视觉领域,第一个脸部识别算法就是基于PCA与SVD的,用特征对脸部进行特征表示,然后降维、最后进行面部匹配。尽管现在面部识别方法复杂,但是基本原理还是类似的。

svd.png

独立成分分析(ICA)

独立成分分析(Independent Component Analysis,ICA)是一门统计技术,用于发现存在于随机变量下的隐性因素。ICA为给观测数据定义了一个生成模型。在这个模型中,其认为数据变量是由隐性变量,经一个混合系统线性混合而成,这个混合系统未知。并且假设潜在因素属于非高斯分布、并且相互独立,称之为可观测数据的独立成分。

ica.png

优点

  • 与监督学习相比,无监督学习用于更复杂的任务,因为在无监督学习中,我们没有标记的输入数据。
  • 无监督学习更可取,因为与标记数据相比,它更容易获得未标记数据。

缺点

  • 无监督学习本质上比监督学习更难,因为它没有相应的输出。
  • 无监督学习算法的结果可能不太准确,因为输入数据没有标记,并且算法事先不知道确切的输出。

无监督学习虽然省去了数据标注的问题,但我们也因此很难控制模型学到了什么特征,因此,模型的有效性是一个需要特别注意的问题。此外,在模型表现上,不同模型的对比很困难。我们不知道什么样的表征才是好的表征…… 我们甚至对判定无监督学习工作好坏的合适的目标函数都没有一个明确的定义。即使监督学习已经在很多任务上取得了出色的成绩,但目前学界还是有很多人相信无监督学习才是未来的趋势。在目前能够轻易获取海量数据但标注困难,和非结构化数据比例持续上升的背景下无监督学习的重要性在不断上升。

半监督学习

半监督学习(Semi-Supervised Learning,SSL)是模式识别和机器学习领域研究的重点问题,是监督学习与无监督学习相结合的一种学习方法。半监督学习使用大量的未标记数据,以 同时使用标记数据,来进行模式识别工作。当使用半监督学习时,将会要求尽量少的人员来从事工作,同时,又能够带来比较高的准确性,因此,半监督学习目前正越来越受到人们的重视。

Semi-Supervised-Learning.png

半监督学习:综合利用有类标的数据和没有类标的数据,来生成合适的分类函数。

半监督学习问题从样本的角度而言是利用少量标注样本和大量未标注样本进行机器学习,从概率学习角度可理解为研究如何利用训练样本的输入边缘概率 P( x )和条件输出概率P (y| x)的联系设计具有良好性能的分类器。这种联系的存在是建立在某些假设的基础上的,即聚类假设(cluster assumption)和流形假设(maniford assumption)。

当我们拥有标记的数据很少,但是未被标记的数据很多,但是人工标注又比较昂贵的时候。我们可以根据一些条件(查询算法)查询(query)一些数据,让专家进行标记。这是半监督学习与其他算法的本质的区别。所以说对主动学习的研究主要是设计一种框架模型,运用新的查询算法查询需要专家来认为标注的数据。最后用查询到的样本训练分类模型来提高模型的精确度。主动学习的模型如下:A=(C,Q,S,L,U),其中:

  • C指的是一个或者多个分类器
  • Q指的是一些查询函数,也就是一些查询算法
  • S指的是监督者,通常指的是专家
  • L是少量标记的样本
  • U指的是大量未被标记的额样本。

学习者利用少量标记的样本L,通过一些基本的机器学习算法学习一个或者多个机器学习模型C,然后通过查询算法,按照查询算法查询出一批最有用的样本,交给专家,让专家进行标记,最后将新学到的标记数据加入到少量样本中,继续训练模型。一直循环,直到达到一个准则为止。流程如下所示:

cqslu.png

在机器学习问题中,监督学习可能是一个很好的选择,但缺乏高质量的数据,所以半监督学习就提供了一个潜在的解决方案。

强化学习(Reinforcement Learning,RL)是机器学习中的一个领域,是学习“做什么(即如何把当前的情景映射成动作)才能使得数值化的收益信号最大化”。学习者不会被告知应该采取什么动作,而是必须自己通过尝试去发现哪些动作会产生最丰厚的收益。

强化学习同机器学习领域中的有监督学习和无监督学习不同,有监督学习是从外部监督者提供的带标注训练集中进行学习(任务驱动型),无监督学习是一个典型的寻找未标注数据中隐含结构的过程(数据驱动型)。强化学习是与两者并列的第三种机器学习范式,强化学习带来了一个独有的挑战——“试探”与“开发”之间的折中权衡,智能体必须开发已有的经验来获取收益,同时也要进行试探,使得未来可以获得更好的动作选择空间(即从错误中学习)。

Reinforcement-Learning.png

在强化学习中,有两个可以进行交互的对象:智能体(Agnet)和环境(Environment):

  • 智能体:可以感知环境的状态(State),并根据反馈的奖励(Reward)学习选择一个合适的动作(Action),来最大化长期总收益。
  • 环境:环境会接收智能体执行的一系列动作,对这一系列动作进行评价并转换为一种可量化的信号反馈给智能体。
State.png

除了智能体和环境之外,强化学习系统有四个核心要素:策略(Policy)、回报函数(收益信号,Reward Function)、价值函数(Value Function)和环境模型(Environment Model),其中环境模型是可选的。

  • 策略:定义了智能体在特定时间的行为方式。策略是环境状态到动作的映射。
  • 回报函数:定义了强化学习问题中的目标。在每一步中,环境向智能体发送一个称为收益的标量数值。
  • 价值函数:表示了从长远的角度看什么是好的。一个状态的价值是一个智能体从这个状态开始,对将来累积的总收益的期望。
  • 环境模型:是一种对环境的反应模式的模拟,它允许对外部环境的行为进行推断。

强化学习是一种对目标导向的学习与决策问题进行理解和自动化处理的计算方法。它强调智能体通过与环境的直接互动来学习,而不需要可效仿的监督信号或对周围环境的完全建模,因而与其他的计算方法相比具有不同的范式。

强化学习使用马尔可夫决策过程的形式化框架,使用状态,动作和收益定义学习型智能体与环境的互动过程。这个框架力图简单地表示人工智能问题的若干重要特征,这些特征包含了对因果关系的认知,对不确定性的认知,以及对显式目标存在性的认知。

价值与价值函数是强化学习方法的重要特征,价值函数对于策略空间的有效搜索来说十分重要。相比于进化方法以对完整策略的反复评估为引导对策略空间进行直接搜索,使用价值函数是强化学习方法与进化方法的不同之处。

示例和应用

以经典的 Flappy Bird 游戏为例,智能体就是游戏中我们操作的小鸟,整个游戏中的天空和遮挡管道即为环境,动作为玩家单击屏幕使小鸟飞起的行为,如下图所示:

Flappy-Bird.png

目前,强化学习在包括游戏,广告和推荐,对话系统,机器人等多个领域均展开了广泛的应用。

游戏

AlphaGo 是于 2014 年开始由英国伦敦 Google DeepMind 开发的人工智能围棋软件。AlphaGo 使用蒙特卡洛树搜索(Monte Carlo tree search),借助估值网络(value network)与走棋网络(policy network)这两种深度神经网络,通过估值网络来评估大量选点,并通过走棋网络选择落点。

AlphaGo.png

广告和推荐

tuijian.png

对话系统

duihua.png

机器人

bot.png

机器学习算法地图

machine-learning-map.png

参考链接:


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK