人工智能笔记之机器学习原理
学习完数学理论就差不多该开始学习机器学习的原理了,现在流行的深度学习和强化学习,基本都是基于机器学习的原理,机器学习是基础,所以需要先了解机器学习是什么,怎么实现的。
机器学习原理
学习完数学理论就差不多该开始学习机器学习的原理了,现在流行的深度学习和强化学习,基本都是基于机器学习的原理,机器学习是基础,所以需要先了解机器学习是什么,怎么实现的。
1. 机器学习的本质
机器学习的本质是找到一个功能函数,这个函数会根据我们的输入,返回一个结果。所谓函数就是输入了一个或几个变量(x),通过数学转换之后输出一个数据(y),所以只要确定了数学转换的算法,以及算法中所需要的参数,就能确定这个函数。
2. 机器学习任务及具体步骤
机器学习的核心任务有两个,首先是找到合适的算法,其次是计算该算法所需要的参数。一般我们举一个最简单的函数,如 y = w x + b y=wx+b y=wx+b,其中w是变量的系数,代表权重,参数b是常量,代表偏置量。通过给出大量的x值和y值,算出w和b,那么就可以得出具体的功能函数,我们也就找到规律了,有了具体的函数,根据输入x的值,我们就知道输出的y值了,这就是机器学习,具体的步骤如下:
根据x,y值的输入,推算规律
x | y |
---|---|
12 | 33 |
45 | 34 |
32 | 3 |
56 | 43 |
… | … |
- 算法选择:选用最简单的线性函数 y = w x + b y=wx+b y=wx+b
- 初始化参数:就是给w,b一个初始的值,这个初始的值是个随机数
- 计算误差:现在已经知道了w和b,那么就可以把样本数据中的x带入函数中求y值,为了避免混淆把这次算出的y值记作 y h a t y^{hat} yhat,然后通过计算误差的函数计算误差,计算误差函数为
J ( w , b ) = ∑ i = I n [ ( w x + b ) − y ] 2 J(w,b)=\sum^n_{i=I}[(wx+b)-y]^2 J(w,b)=i=I∑n[(wx+b)−y]2 - 判断学习是否完成:每次计算出来的误差相互对比,总误差不超过0.0001,就认为学习已经完成。
- 调整参数:学习的目的是为了把误差降到最低,根据数学知识我们知道,沿着误差函数的导数方向调整参数,误差函数就可以变小了。即,用现有的误差公式求对参数w的偏导数,以及对参数b的偏导数,就能得到 Δ w , Δ b \Delta w,\Delta b Δw,Δb,再用原来的参数w,b减去 Δ w , Δ b \Delta w,\Delta b Δw,Δb,就实现了对参数的调整,每次只调整1%,这个1%就是学习率 η \eta η。
具体过程如下:
w = w − η Δ w b = b − η Δ b w=w-\eta \Delta w \\ b=b-\eta \Delta b w=w−ηΔwb=b−ηΔb
利用符合函数的求导公式:
f ( g ( x ) ) ′ = f ′ ( x ) g ′ ( x ) f(g(x))^\prime=f^\prime(x)g^\prime(x) f(g(x))′=f′(x)g′(x),令 g ( x ) = w x + ( b − y ) g(x)=wx+(b-y) g(x)=wx+(b−y),
f ( g ( x ) ) = ∑ i = I n [ w x + ( b − y ) ] 2 f(g(x))=\sum^n_{i=I}[wx+(b-y)]^2 f(g(x))=i=I∑n[wx+(b−y)]2,上述误差函数的偏导数分别为
Δ w = ∂ ∂ w J ( w , b ) = ∑ i = 1 n 2 ( w x + b − y ) x Δ b = ∂ ∂ b J ( w , b ) = ∑ i = 1 n 2 ( w x + b − y ) \Delta w= \frac{∂}{∂w}J(w,b)=\sum^n_{i=1}2(wx+b-y)x \\ \Delta b= \frac{∂}{∂b}J(w,b)=\sum^n_{i=1}2(wx+b-y) Δw=∂w∂J(w,b)=i=1∑n2(wx+b−y)xΔb=∂b∂J(w,b)=i=1∑n2(wx+b−y) - 反复迭代,根据步骤3计算的误差,再次进行步骤4和步骤5的迭代循环,直到误差变得足够小,此时的w和b值就是机器学习要找的参数。以后就可以用这个具体的功能函数根据任意一个新的x值,计算出对应的y值了。
3. 机器学习的复杂化
现实中基本不可能只存在一个变量,影响事务发展的因素也不可能只有一个,所以将线程方程复杂化之后,我们得出一个公式:
h ( θ ) = θ 0 x 0 + θ 1 x 1 + ⋯ + θ n x n = ∑ i = 1 n θ i x i h(\theta)=\theta_0x_0+\theta_1x_1+\cdots+\theta_nx_n=\sum^n_{i=1}\theta_ix_i h(θ)=θ0x0+θ1x1+⋯+θnxn=i=1∑nθixi
其中 θ \theta θ代表权重,n是变量的个数。之后我们就可以得出损失函数,也叫代价函数,可以用公式表示为:
J ( θ ) = ∑ i = 1 n ( h θ ( x ( i ) ) − y ( i ) ) 2 J(\theta)=\sum^n_{i=1}(h_\theta(x^{(i)})-y^{(i)})^2 J(θ)=i=1∑n(hθ(x(i))−y(i))2
其中m表示样本数据的个数,机器学习的目标就是让损失函数足够小,而办法就是不断的调整 θ \theta θ,调整的方法就是对 J ( θ ) J(\theta) J(θ)求偏导数。

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)