机器学习和深度学习概念入门
对于很多初入学习人工智能的学习者来说,对人工智能、机器学习、深度学习的概念和区别还不是很了解,有可能你每天都能听到这个概念,也经常提这个概念,但是你真的懂它们之间的关系吗?那么接下来就给大家从概念和特点上进行阐述。先看下三者的关系。
对于很多初入学习人工智能的学习者来说,对人工智能、机器学习、深度学习的概念和区别还不是很了解,有可能你每天都能听到这个概念,也经常提这个概念,但是你真的懂它们之间的关系吗?那么接下来就给大家从概念和特点上进行阐述。先看下三者的关系。
机器学习横跨计算机科学、工程技术和统计学等多个科学。人们很难直接从原始数据本身获得所需信息,机器学习可以把无序的数据转换成有用的信息;移动计算和传感器产生的海量数据意味着未来将面临越来越多的数据,如何从中抽取到有价值的信息很重要,机器学习可以帮助我们从中抽取有用的信息。
近数十年内,由于机器学习的热潮,计算能力有着摩尔定律的加持,以及大数据时代的来临,让越来越多的领域里都能被机器学习很好的应用。特别是在自然语言处理,计算机视觉等领域都有非常好的发展,甚至已经可以达到商业用途的地步。但是随着数据的增长,数据的安全是否得到了保障,模型的功能性是否得到了验证这仍然是个大大的问号。
机器学习是个跨领域的学科,而且在实际应用中有巨大作用,但是没有一本书能让你成为机器学习的专家。
在这篇文章中,我挑选了10本书,这些书有不同的风格,主题也不尽相同,出版时间也不一样。因此,无论你是新手还是领域专家,一定能找到适合你的。
<strong>新手的最佳读物</strong>
<img src="http://imgtec.eetrend.com/sites/imgtec.eetrend.com/files/201901/blog/19…; alt="">
这本书绝对是初学者非常期待的入门书。这本书条理清晰,学习成本低,因此我把它列为新手的最佳读物。
下面让我们深入讨论一些关于人工智能程序的话题。
<strong>人工智能编程范例</strong>
摘要: 本文对机器学习的一些基本概念给出了简要的介绍,并对不同任务中使用不同类型的机器学习算法给出一点建议。
在从事数据科学工作的时候,经常会遇到为具体问题选择最合适算法的问题。虽然有很多有关机器学习算法的文章详细介绍了相关的算法,但要做出最合适的选择依然非常困难。
在这篇文章中,我将对一些基本概念给出简要的介绍,对不同任务中使用不同类型的机器学习算法给出一点建议。在文章的最后,我将对这些算法进行总结。
首先,你应该能区分以下四种机器学习任务:
• 监督学习
• 无监督学习
• 半监督学习
• 强化学习
<font size="3" color="blue"><strong>监督学习</strong></font>
<font size="3"><strong>一、批量学习</strong></font>
在监督学习的批量方法中,多层感知器的突出权值的调整在训练样本集合的所有N个例子都出现后进行,这构成了训练的一个回合。换句话说,批量学习的代价函数是由平均误差能量定义的。多层感知器的突触权值的调整是以回合-回合为基础的。相应地,学习曲线的一种实现方式是通过描绘平均误差能量对回合数的图形而得到,对于训练的每一个回合,训练样本集合的样例是随机选取的。学习曲线通过对足够大量的这样实现的总体平均来计算,这里每次实现是在随机选取不同初始条件下完成的。这一特点符合交叉验证的规律,实验中的实验集、验证集、测试集一般都是批量处理的典例。
优点:
(1)消除样本顺序的影响
(2)对梯度向量的精确估计,因此,在简单条件下,保证了这一方法最速下降到局部极小点的收敛性。
(3)学习的并行性。
缺点:
(1)有着存储需求
<font size="3"><strong>二、在线学习</strong></font>
梯度下降是迭代法的一种,可以用于求解最小二乘问题(线性和非线性都可以)。在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一。
在求解损失函数的最小值时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数和模型参数值。反过来,如果我们需要求解损失函数的最大值,这时就需要用梯度上升法来迭代了。
一般情况下,我们把要最小化或最大化的函数称为目标函数。当我们队其进行最小化时,我们也把他称为代价函数,损失函数或误差函数。
我们说导数对于最小化一个函数很有用,因为它告诉我们如何更改x来略微地改善y。加入,我们知道对于足够小的\varepsilon来说,
<font size="3"><strong>1. LDA</strong></font>
LDA是一种三层贝叶斯模型,三层分别为:文档层、主题层和词层。该模型基于如下假设:
1)整个文档集合中存在k个互相独立的主题;
2)每一个主题是词上的多项分布;
3)每一个文档由k个主题随机混合组成;
4)每一个文档是k个主题上的多项分布;
5)每一个文档的主题概率分布的先验分布是Dirichlet分布;
6)每一个主题中词的概率分布的先验分布是Dirichlet分布。
文档的生成过程如下:
1)对于文档集合M,从参数为β的Dirichlet分布中采样topic生成word的分布参数φ;
2)对于每个M中的文档m,从参数为α的Dirichlet分布中采样doc对topic的分布参数θ;
3)对于文档m中的第n个词语W_mn,先按照θ分布采样文档m的一个隐含的主题Z_m,再按照φ分布采样主题Z_m的一个词语W_mn。
还在为如何抉择而感到纠结吗?快采用决策树(Decision Tree)算法帮你做出决定吧。
机器学习有望从根本上改变软件开发的本质,这也许是自FORTRAN和LISP被发明以来的第一次。 它对我们几十年来的编程范式提出了第一个真正的挑战。 这些变化对数百万正在实施软件开发的人而言,会意味着什么? 我们是否会看到失业和裁员,或者会看到编程演变成不同的东西,也许会是一种更关注于满足用户的东西?
自20世纪70年代以来,我们已经或多或少地构建了软件。 我们有高级语言,低级语言,脚本语言以及用于构建和测试软件的工具,但这些工具需要我们做的事情没有发生太大变化。 我们的语言和工具比50年前要好得多,但它们本质上是一样的。我们仍然有着代码编辑器。这些编辑器变得更花哨了:他们有彩色的高亮,变量名补全,它们有时可以帮助我们完成重构等任务,但他们仍然是emacs和vi的后代。 面向对象代表了一种不同的编程风格,而不是某种本质上而言“全新”的东西 —— 当然,函数式编程可以一直追溯到50年代(除非我们不知道它曾经被叫作这个名字)。 我们可以做得更好吗?