机器学习笔记:梯度下降

        机器学习的英文名称叫Machine Learning,简称ML,该领域主要研究的是如何使计算机能够模拟人类的学习行为从而获得新的知识和技能,并且重新组织已学习到的知和技能,使之在应用中能够不断完善自身的缺陷与不足。

        简单来说,机器学习就是让计算机从大量的数据中学习到相关的规律和逻辑,然后利用学习来的规律来预测以后的未知事物。(摘自:http://baijiahao.baidu.com/s?id=1591709318502145890&wfr=spider&for=pc)

机器学习

        机器学习有3个组成要素:数据(样本)、模型(假设)、算法。数据是机器学习的样本集,模型是机器学习要找寻的规律和逻辑,算法是机器学习探寻模型时采用的方法和手段。

        机器学习通常的过程是这样的:给定一个样本集{(x1,y1), (x2,y2), (x3,y3)...},我们首先假设一个模型用来描述输入和输出的对应关系y = f(x)。对于一个样本(x1, y1),使用假设函数得到的输出为f(x1),与样本实际值的偏差为f(x1) - y1。损失函数为所有样本偏差的和,L(θ) = (f(x1) - y1)^2 + (f(x2) - y2)^2 + ...,其中θ是f(x)函数中引入的参数。机器学习的目标就是找到使得L(θ)最小的θ。

        如何找到使得L(θ)最小的θ呢?梯度下降法是一种常用的方法。其计算公式为:θ = θ - α * L(θ)',其中α为学习率,L(θ)'是L(θ)的导数。计算过程如下:

        1. 指定一个学习率α,例如0.05

        2. 给定一个起始位置θ

        3. 计算L(θ)在处的导数 L(θ)',计算θ = θ - α * L(θ)'

        4. 反复迭代执行第3步,达到指定迭代次数退出。或者两次迭代的L(θ)值的差值小于一个阈值则退出。

        下面举例演示梯度下降过程。假设 L(θ) = θ * θ,则L(θ)' = 2 * θ。指定α = 0.05,则计算公式为θ = θ - 0.05 * 2 * θ。如下图从θ = 10的位置开始下降:

梯度下降

示例代码:

import matplotlib.pyplot as plt

import numpy as np

x = np.linspace(-10,10,100)

y =  x * x

plt.figure()

plt.plot(x, y)

tmp =10

plt.plot(tmp, tmp * tmp, '*')

itercnt =0

while itercnt <100:

        d =2 * tmp

        tmp = tmp -0.05 * d

        plt.plot(tmp, tmp * tmp, '*')

        itercnt = itercnt +1

print(tmp)

print(tmp * tmp)

plt.show()

你可能感兴趣的:(机器学习笔记:梯度下降)