当前位置:网站首页 > 深度学习 > 正文

深度学习算法(机器学习算法)



第一章 机器学习基础

机器学习(Machine Learning,ML)

定义:机器具备有学习的能力(Looking for Function)。机器学习就是让机器具备找一个函数的能力。例如: AlphaGo 就可以看作一个函数,将棋盘上黑子白字的位置输入,输出机器下一步落子的位置。

分类(Different types of Functions):

(1)回归(Regression):假设要找的函数的输出是一个数值,一个标量(scalar),这种机器学习的任务称为回归。

(2)分类(Classification):任务要让机器做选择题。人类先准备好一些选项,也被称为类别(class),需要找的函数的输出就是从设定好的选项里面选择一个当作输出,该任务称为分类。分类可以有多个选项。

(3)结构化学习(structured learning):机器需要产生一个有结构的物体,而不是简单地做选择题或输出一个数字。例如,画一张图或写一篇文章。

1.1案例学习(How to find a Function)

    首先,写出一个带有未知参数(parameter)的函数F,也被称为模型(model),如 y=b+wx ,y和x都是数值;w(权重,weight)和b(偏置,bias)是未知的参数,需要通过领域知识(domain knowledge)猜测。只是一个猜测,不一定正确,需要修正。

    第二步,定义损失(loss)。

    损失是函数L(b,w),输入的是模型中的参数b和w,输出的值代表,现在如果把这一组未知的参数,设定某一个数值的时候,这笔数值好还是不好。可以通过训练资料,即过去每天频道的点击次数。

    假设b=5、w=1、x代入100,预测明天的点击次数为y1=5+x=105,若实际明天的点击次数真实值(标签,label)y=110,我们低估了频道的点击次数,可以估算预测值y1与真实值y的差距e。

    算法1(平均绝对误差,MAE): e=|y1-y|

    算法2(均方误差,MSE):e=(y1-y)*(y1-y)

    通过以上方式,我们可以算出近3年来每天的差距e,将每一天的差距e加起来求平均值可以得到损失L

    L=1/N*(e1+e2+e3+......eN) N代表训验数据的个数

    L越大,代表参数越不好;L越小,代表参数越好。

    通过后台的真实数据,我们可以计算出许多种不同组合的w和b,进一步画出等高线图,这也被称为误差表面(error surface)。

    有一些任务中,y1和y都是概率分布,这时我们会选择交叉熵(cross entropy,用于衡量两个概率分布之间的差异)。

    第三步,解一个最优化的问题。

    把未知的参数找一个数值出来,看代入哪一个数值计算可以让损失 L 的值最小,即为要找的 w 跟 b,这个可以让损失最小的 w 跟 b 称为 w∗ 跟 b∗ 代表它们是最好的一组 w 跟 b,可以让损失的值最小。

    梯度下降,是经常会使用优化的方法。先假设只有一个未知的参数 w,b 是已知的。w 代不同的数值的时候,就会得到不同的损失,这一条曲线就是误差表面,由于只有一个参数,所以是一维图像。我们需要求得L最小时,w为多少。随机选取一点作为初始点w0,计算dL/dw |w=w0,即w=w0时,参数w对误差L的微分(切线斜率)。若斜率为负,则该点左侧较高,右侧较低,我们需要将w值变大,即w往右侧移动;若斜率为正,则相反。

    而w值向左或向右的变化程度取决于斜率和学习率(learning rate)。

    斜率大一点,移动的步伐大一点;反之,移动的步伐小一点。

    学习率(η) 也会影响步伐大小。η是自己设定的,如果 η 设大一点,每次参数更新就会量大,学习可能就比较快。如果 η 设小一点,参数更新就很慢,每次只会改变一点点参数的数值。这种在做机器学习,需要自己设定,不是机器自己找出来的,称为超参数(hyperparameter)。

    把 w0 往右移一步,新的位置为 w1,这一步的步伐是 η 乘上微分的结果,即:w1←w0—η*dL/dw |w=w0。不断重复上述操作,再将w1移动,算出新位置w2,再将w2移动......。不断移动w的位置,最后会停下来。停下来有两种情况,第一种是实验初始设定调整参数计算微分的时候上限为10000次,参数更新10000次时,就不再更新了 (更新次数也是一个超参数)。第二种情况则为理想状态上,不断调整参数到某一位置上时,斜率为0,0*学习率(η )也为0,则参数的位置不会再更新。

    梯度下降存在缺陷。因为在函数中可能存在局部最小值(local minima)和全局最小值(global minima),而w0是随即设置的位置,可能先接近到局部最小值,更新就会停止,但它并不是整个误差表面上的最低点。事实上局部最小值是一个假问题,在做梯度下降的时候,真正面对的难题不是局部最小值。

    当有两个参数时,我们只需要将1个参数的办法推广到两个参数中。例如,随机取w=w0, b=b0, 分别计算 w=w0, b=b0时,w 和 b 对于 L 的微分。计算完后更新 w 和 b ,将 w0 和 b0 分别乘上各自学习率与微分相乘的结果,得到w1、b1。

    在深度学习框架里面,比如 PyTorch 里面,算微分都是程序自动帮计算的。只需要反复同样的步骤,不断的更新 w 跟 b,期待最后,可以找到一个最好的w∗ 和最好的 b∗. 

    到此这篇深度学习算法(机器学习算法)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

    版权声明


    相关文章:

  • 广度优先搜索和深度优先搜索(广度优先搜索和深度优先搜索的基本思想)2025-09-03 13:18:06
  • 广度优先搜索和深度优先搜索的区别(广度优先搜索序列和深度优先搜索序列)2025-09-03 13:18:06
  • 广度优先搜索和深度优先搜索都可以用于遍历一棵树(广度优先搜索和深度优先搜索例题)2025-09-03 13:18:06
  • 广度优先搜索和深度优先搜索(广度优先搜索和深度优先搜索的本质区别)2025-09-03 13:18:06
  • linux学习(linux要怎么学)2025-09-03 13:18:06
  • 广度优先搜索和深度优先搜索都可以用于遍历一棵树(深度优先搜索算法和广度优先搜索算法)2025-09-03 13:18:06
  • 广度优先搜索和深度优先搜索都可以用于遍历一棵树(广度优先搜索序列和深度优先搜索序列)2025-09-03 13:18:06
  • 广度优先搜索(广度优先搜索和深度优先搜索)2025-09-03 13:18:06
  • 广度优先搜索和深度优先搜索都属于(广度优先搜索和深度优先搜索都属于())2025-09-03 13:18:06
  • 广度优先搜索和深度优先搜索一样吗(广度优先搜索和深度优先搜索一样吗知乎)2025-09-03 13:18:06
  • 全屏图片