人工智能介绍

Posted eyoulc123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了人工智能介绍相关的知识,希望对你有一定的参考价值。

0 前言

前一段时间,想做一个文本相似性的系统,用于比对两个句子的相似性,因此接触了一下机器学习。其中主要是看李宏毅老师的机器学习视频课程。但是机器学习太过于复杂,对于我来说,我估计还没有入门,只是看到机器学习这个大殿。 这篇文章,是对我之前学习的一个总结,也是我对于机器学习的一个理解。如果大家要系统的学习,建议看一下李宏毅老师的机器学习课程视频。

1. 人工智能几个名词

人工智能是一个很广的词,它包含了机器学习、专家系统等。 但是到了现在,大家一般提到人工智能指的就是神经网络、机器学习了。就象伟人一样,机器学习也经历了“三起三落”:

但是早期的时候,它并不是叫机器学习,而是以神经网络的名号来闯荡江湖。 但是随着XOR的问题提出,也宣判了神经网络的死刑。 在这后面很多年的时候,神经网络这个名声就开始变臭了,它的名声变臭到什么程度呢?只要文章中包含了“神经网络”这一个词,那篇文章就会被拒。 这怎么搞呢?没关系,给它再起一个名字,因此机器学习闪亮出场。

神经网络不是一个很新的技术,它出现的时间很早。 但是有一段时间,神经网络陷入了低谷,在这段时间,这个技术就变臭了,用台大李宏毅老师的话来说:神经网络象变成一个骂人的话,基本一有神经网络这个词,论文就会被拒绝。 后来随着技术的发展,人们发展神经网络还是可以解决很多问题的,但是“神经网络”这个词已经变臭了呀,这个时候人们又发明了一个新的词:机器学习。因此,我们可以这样子理解:机器学习 = 神经网络。

说完了机器学习与神经网络的关系,我们再具体说一下机器学习

2. 机器学习

总体来说,机器学习主要就是解决两个问题,或者说一个问题:回归问题。 对于回归,我不想讲解太多的内容。在这里,我们以一个简单的一元回归的问题,引入我们的分析。

2.1 一元线性回归问题

在我们中学的时候,我们经常会碰到这样子的一个例子。

例:
为了统计某地的房价,统计了平米数与房价

样本房价(万件)制造费用(万元)
160100
270120
372121
480140
590160
根据以上数据,计算出产量与制造费用的关系

这个问题,就是一个典型的一元线性回归的问题。我们将制造费用设为y,而产量为x,那么我们就需要求出一个类似于$y = bx + a$的函数,即为:

在中学的时候,我们学过一元线性回归方程的计算公式:

最 小 二 乘 法 计 算 公 式 : b ^ = ∑ i = 1 n ( x i − x ˉ ) ( y i − y ˉ ) ∑ i = 1 n ( x i − x ˉ ) 2 a ^ = y ˉ − b ^ x ˉ \\beginaligned & 最小二乘法计算公式:\\\\ & \\hatb = \\frac\\sum_i=1^n(x_i-\\barx)(y_i-\\bary)\\sum_i=1^n(x_i-\\barx)^2 \\\\ & \\hata = \\bary - \\hatb\\barx \\endaligned b^=i=1n(xixˉ)2i=1n(xixˉ)(yiyˉ)a^=yˉb^xˉ
那么上面的结果我们就可这样子计算出来:

  1. 计算平均值

x ˉ = 60 + 70 + 72 + 80 + 90 5 = 74.4 y ˉ = 100 + 120 + 121 + 140 + 160 5 = 128.2 \\beginaligned & \\barx = \\frac60+70+72+80+905 = 74.4 \\\\ & \\bary = \\frac100+120+121+140+1605 = 128.2 \\endaligned xˉ=560+70+72+80+90=74.4yˉ=5100+120+121+140+160=128.2
3. 带入 b ˉ \\barb bˉ公式计算

b ^ = ( 60 − 74.4 ) ( 100 − 128.2 ) + ( 70 − 74.3 ) ( 120 − 128.2 ) + ( 72 − 74.4 ) ( 121 − 128.2 ) + ( 80 − 74.4 ) ( 140 − 128.2 ) + ( 90 − 74.4 ) ( 160 − 128.2 ) ( 60 − 74.4 ) 2 + ( 70 − 74.3 ) 2 + ( 72 − 74.4 ) 2 + ( 80 − 74.4 ) 2 + ( 90 − 74.4 ) 2 = 2.014 \\hatb = \\frac(60-74.4)(100-128.2) + (70-74.3)(120-128.2) + (72-74.4)(121-128.2)+ (80-74.4)(140-128.2) + (90-74.4)(160-128.2)(60-74.4)^2 + (70-74.3)^2 + (72-74.4)^2 + (80-74.4)^2 +(90-74.4)^2 = 2.014 b^=(6074.4)2+(7074.3)2+(7274.4)2+(8074.4)2+(9074.4)2(6074.4)(100128.2)+(7074.3)(120128.2)+(7274.4)(121128.2)+(8074.4)(140128.2)+(9074.4)(160128.2)=2.014
4. 计算 a ˉ \\bara aˉ

a ˉ = y ˉ − b ^ x ˉ = 128.2 − 2.014 ∗ 74.4 = − 21.641 \\bara = \\bary - \\hatb\\barx = 128.2- 2.014*74.4 = -21.641 aˉ=yˉb^xˉ=128.22.01474.4=21.641

  1. 写出方程: y ^ = 2.014 x ^ − 21.641 \\haty = 2.014\\hatx -21.641 y^=2.014x^21.641

这个计算过程,是我们以前的方法,但是对于从事计算机的人员来说,这种优雅的方式,不是我们的风格。我们崇尚的“暴力出奇迹”,充分利用计算机的计算能力,随便给定一个a和b,然后不断的逼近它,使得它们的值最小。例如我让a = 1, b =1,然后,我们看结果:

从上面的图中,我们就可以看到a和b的值不合理,我们需要将整条直接往上移一下,然后尝试改变a的值,同时斜率也感觉不符合相求,最后不断的变化,直接到找到一个符合我们要求的值。

至我们如何判断a与b的值是否合适,这里就涉及到一个处理方式:梯度下降的方法。大家只需要知道,有一个固定的方法,通过这个固定的方法,我们可以知道对应的a与b是往大调,还是往小调。 通过这种方法,我们不断的逼近我们的散点。最终得到一个符合我们要求的方式。

最终的函数,我们可以得到一个,当我们输入的x = 5时,我们就会发现一个问题 房价为-1.5,房价不可能为负值。因此一般在最后的输出的时候,增加一个修改函数。 整体就变成了:

其实这个修改函数,有一个专业的名词:激活函数(不知道它为啥叫激活函数,但是我一直感觉它的作用就是对结果值进行修正。后面我们也称它为激活函数)。常用的也只有几个。一个叫ReLU函数,一个是Sigmod函数。 下面是它们两个的函数图形。如果懒得看,可以直接跳过。 我们只需要记住,它们的作用就是对于预测函数的数值进行一个修改,让它更靠谱一些。

ReLU函数:

Sigmod函数:

在上面的那个例子中,我们只有一个输入,就是房子的大小,即平米数。但是我们都知道房价并不只是与大小相关,还与位置、房型相关等其它因素相关。因此我们还需要将这些东西。我们假设位置为变量x1, 房型为x2参数,而每一种因素,我们都可以表示成一个类似于$y=bx +a$形式的方程,那么房价表示,可能就需要为:

总 房 价 = ( 房 屋 大 小 因 素 x ) + ( 位 置 因 素 x 1 ) + ( 房 型 x 2 ) y = ( b x + a ) + ( b 1 x 1 + a 1 ) + ( b 2 x 2 + a 2 ) 总房价 = (房屋大小因素x) + (位置因素 x1) + (房型 x2) \\\\ y = (bx + a) + (b_1x_1 +a_1) + (b_2x_2 + a_2) =(x)+(x1)+(x2)y=(bx+a)+(b1x1+a1)+(b2x2

以上是关于人工智能介绍的主要内容,如果未能解决你的问题,请参考以下文章

人工智能实验室第二次培训之神经网络搭建介绍

[转]BP人工神经网络的介绍与实现

本人在Unity3D中开发的人工神经网络插件的介绍

深度学习神经网络介绍

常见的激活函数

机器学习之激励函数