机器学习

机器学习(Machine Learning,简称ML)是一种人工智能(AI)的分支,致力于研究让计算机系统能够从数据中学习并自动改进性能的算法和技术。机器学习使计算机系统能够从经验中学习,而不需要明确地进行编程。

如何理解梯度下降

梯度下降是迭代法的一种,可以用于求解最小二乘问题(线性和非线性都可以)。在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一。

在求解损失函数的最小值时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数和模型参数值。反过来,如果我们需要求解损失函数的最大值,这时就需要用梯度上升法来迭代了。

一般情况下,我们把要最小化或最大化的函数称为目标函数。当我们队其进行最小化时,我们也把他称为代价函数,损失函数或误差函数。

我们说导数对于最小化一个函数很有用,因为它告诉我们如何更改x来略微地改善y。加入,我们知道对于足够小的\varepsilon来说,

f(x-\varepsilonsign(f'(x)))<f(x)。因为我们可以将x往导数的反方向移动一小步来减少f(x)。这种技术被称为梯度下降。

机器学习常用算法(LDA,CNN,LR)原理简述

1. LDA

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。

对于软件研发而言机器学习意味着什么?

机器学习有望从根本上改变软件开发的本质,这也许是自FORTRAN和LISP被发明以来的第一次。 它对我们几十年来的编程范式提出了第一个真正的挑战。 这些变化对数百万正在实施软件开发的人而言,会意味着什么? 我们是否会看到失业和裁员,或者会看到编程演变成不同的东西,也许会是一种更关注于满足用户的东西?

自20世纪70年代以来,我们已经或多或少地构建了软件。 我们有高级语言,低级语言,脚本语言以及用于构建和测试软件的工具,但这些工具需要我们做的事情没有发生太大变化。 我们的语言和工具比50年前要好得多,但它们本质上是一样的。我们仍然有着代码编辑器。这些编辑器变得更花哨了:他们有彩色的高亮,变量名补全,它们有时可以帮助我们完成重构等任务,但他们仍然是emacs和vi的后代。 面向对象代表了一种不同的编程风格,而不是某种本质上而言“全新”的东西 —— 当然,函数式编程可以一直追溯到50年代(除非我们不知道它曾经被叫作这个名字)。 我们可以做得更好吗?

我们该如何学习机器学习中的数学?

数学在机器学习中非常重要,不论是在算法上理解模型代码,还是在工程上构建系统,数学都必不可少。通常离开学校后很难有机会静下心学习数学知识,因此我们最好能通过阅读小组或读书会等形式营造环境,并专注学习那些在实践中常常需要用到的数学知识。

数学达到什么水平才可以开始机器学习?人们并不清楚,尤其是那些在校期间没有研究过数学或统计学的人。

本文的写作目的是介绍构建机器学习产品或进行相关学术研究所必需的数学背景,以及数学在工程和研究中的重要性。这些建议是根据我和机器学习工程师、研究者和教育者交流而得到的,当然也有我自己在机器学习研究和业界工作中的个人经验。

为了构建必备的数学背景,我首先提出不同的思维模式和策略,帮助大家在学校之外也可以接受数学教育。然后,我会给出不同种类机器学习工作所需的数学背景,从高中水平的统计学和微积分到概率图模型(PGM)的最新进展。希望大家读完本文后,能够对自己在机器学习工作中所需要的数学教育有清楚的认知。

关于数学焦虑

很多人害怕数学,包括工程师。首先,我想解决「擅长数学」这一迷思。

一般精通数学的人有大量和数学有关的实践经验。因此,他们在研究数学时更容易保持专注。相比内在能力,学生的思维模式才是决定一个人学习数学能力的关键。

机器学习里,数学到底有多重要?

之前总有同学问:如果学习机器学习、人工智能用什么软件比较好?从与大家的交流中发现,很多同学把机器学习的核心放到了软件的使用,缺少获取有用结果所必要的数学方法与思维。

事实上,目前针对机器学习的软件十分容易获取,例如 Python,scikit-learn,Weka 等等,而且相应的软件学习教程也不难找到。

但机器学习是集合了统计学、概率论、计算机科学、数学算法多等方面交叉研究,即便你对机器学习的应用炉火纯青,但对这些技术没有一个全面的数学理解,极有可能出现应用失误。

那自然有同学会问:

为什么机器学习中的数学很重要?

这个问题的理由我想强调以下几点:
1. 选择合适的算法,要考虑的包括算法准确性、训练时间、模型复杂度、参数的数量和特征数量。
2. 选择参数设置和验证策略。
3. 理解偏差与方差的权衡以确定欠拟合和过拟合。
4. 预估正确的置信区间和不确定性。

你需要多高的数学水平?

试图了解一个例如机器学习这样的跨学科领域,主要的问题是必要的数学知识的量,以及理解这些技术需要的数学水平。这个问题的答案是多方面的,取决于个人水平和兴趣。

学习机器学习需要理解的五个基本概念

这篇文章主要讲述了机器学习的相关内容,阐述了机器学习的主要意义和形成过程。区别了机器学习与AI、深度学习、神经网络等专业词汇。

大多数人可能对机器学习有点恐惧或困惑。 脑子中会有它到底是什么,它有什么发展方向,我现在可以通过它挣钱吗等等这样的问题。

这些问题的提出都是有依据的。事实上,你可能没有意识到自己其实多年来一直在训练机器学习模型。你看过苹果手机或者是Facebook上的照片吧? 你知道它如何向你展示一组面孔并要求你识别它们吗?其实,通过标记这些照片,你正在训练面部识别模型去识别新面孔。恭喜你,现在可以说你有训练机器学习模型的经验了!但在此之前,请阅读这些机器学习基础知识,以便你可以准确回答任何后续问题。

1)机器学习可以预测

如果你只是在图片中标记朋友的面孔,那就不是在用机器学习模型。如果你上传了一张新照片系统马上告诉你每个人是谁,那你就是应用了机器学习模型。机器学习的主要意义在于根据图案模型和经过训练的其他因素来预测事物。它可以预测任何事物,如要基于地理位置和卧室数量预测房价,基于一年中的时间和天气的变化预测航班是否会延误,依据图片中的人物特点进行人像识别等等。

关于机器学习,你所知道的,可能都是错的?

虽然机器学习已经成为一个高频名词,但是对于大众而言,它依然是一个遥不可及乃至模糊不清的概念。为此,著名投资人 Benedict Evans 在自己的博客上发表博文,针对这一问题表达了自己的看法;本文对这篇博文进行了不改变原意的编译。

机器学习的风潮已经刮了四五年了,除了以 AI 为名如雨后春笋般快速崛起的新创公司们,各家科技巨头也希望围绕这个时髦词“重塑金身”。此外,通过媒体的大肆宣传,机器学习也已经成了一个家喻户晓的名词。总之,机器学习将成为下一个能帮“猪”起飞的风口已经是大家的共识。

在正式开始之前,我们先说说人工智能(AI),机器学习,神经网络和深度学习四者的关联。简单来说,人工智能的范畴最大,机器学习包含在内,它是带来人工智能的方法。至于神经网络,则是机器学习众多算法中的一类,而深度学习则是实现机器学习的技术,是它的一种延伸。

经过这么多年的知识普及,恐怕理解(理论上)神经网络是什么的人已经相当多,至少大家都知道它与范式和数据有关。机器学习让我们能在数据中找到那些暗示性和随机性的范式或结构,而在此之前能找到这些隐含属性的只有人类,因为我们会推理。

有了机器学习,那些原本对人类来说相当简单(或者说无法向计算机描述的问题)但却能难倒计算机的问题就迎刃而解了,各路公司也都拿出了相当炫酷的演示。

机器学习实践的10个小秘诀

对于开发人员而言,基于云的机器学习工具带来了使用机器学习创造和提供新的功能的可能性。然而,开发者想要在它们的应用程序中融入机器学习,通常会犯一些错误,本文列了十条注意点以飨读者。

在提供发现埋藏数据深层的模式的能力上,机器学习有着潜在的能力使得应用程序更加的强大并且更能响应用户的需求。精心调校好的算法能够从巨大的并且互不相同的数据源中提取价值,同时没有人类思考和分析的限制。对于开发者而言,机器学习为应用业务的关键分析提供了希望,从而实现从改善客户体验到提供产品推荐上升至超个性化内容服务的任何应用程序。

像Amazon和Micorosoft这样的云供应商提供云功能的机器学习解决方案,承诺为开发者提供一个简单的方法,使得机器学习的能力能够融入到他们的应用程序当中,这也算是最近的头条新闻了。承诺似乎很好,但开发者还需谨慎。

对于开发人员而言,基于云的机器学习工具带来了使用机器学习创造和提供新的功能的可能性。然而,当我们使用不当时,这些工具会输出不好的结果,用户可能会因此而感到不安。测试过微软年龄检测机器学习工具( http://how-old.net/ )的人都会发现,伴随即插即用的易用性而来的是主要的精度问题——对于关键应用程序或者是重大决策,它应该不值得信赖。