【李宏毅机器学习2021春】01-机器学习基本概念介绍

news2024/9/26 3:28:23

01 - 机器学习基本概念介绍

1. 机器学习的基本任务

1.1 Regression 回归

如,输入过去的数据,对未来的数据进行预测。对数据进行拟合的过程叫做回归。

1.2 Classifiation 分类

给出选项,函数输出正确的选项。

如,下棋,输入每一步,预测下一步。

1.3 Structured Learning 结构化学习

Create something with structure(image, document)。

输出是一个有结构的事物,如计算机画一张图,写一篇文章等。

结构化预测或结构化(输出)学习是监督学习技术的总称,涉及预测结构化对象,而不是标量离散或实际值。

2 以YouTube点击人数预测为例介绍机器学习的运作过程

2.1 函数定义 function

机器学习找函数的过程,分为三个步骤,第一个步骤是写出一个带未知参数的函数 f f f,其能预测未来点击次数。比如写成

y = b + w x 1 y=b+wx_{1} y=b+wx1

b b b w w w 是未知的。带有未知的参数(parameter)的函数称为模型(model)。模型在机器学习里面,就是一个带有未知的参数的函数, 特征(feature). x 1 x_{1} x1是这个函数里面已知的,它是来自于油管后台的信息,2 月 25号点击的总人数是已知的,而 w 跟 b 是未知的参数。

w w w 称为权重(weight), b b b 称为偏置(bias)。

2.2 损失函数的定义loss

2.2.1 案例

loss: 预测值跟真实值之间的关系。

如每天的误差设定为

e n = ∣ y − y ^ ∣ e_{n}=|y-\hat y| en=yy^

总误差设定为

L O S S : L = 1 N ∑ n e n LOSS: L=\frac{1}{N} \sum_{n}e_{n} LOSS:L=N1nen

2.2.2 一些概念

  • LOSS:带有参数的函数 L ( b , w ) L(b,w) L(b,w),表示一组值的好坏
  • e = ∣ y ^ − y ∣ e = |\hat y-y| e=y^y 平均绝对误差 MAE = mean absolute error
  • e = ( y ^ − y ) 2 e = (\hat y-y)^{2} e=(y^y)2 均方误差 MSE = mean square error
  • 有些任务中y和yhat是概率分布,这个时候可能会选择交叉熵(cross entropy)
  • Error Surface 误差曲面:调整w和b,组合计算loss,可以画出等高线图。

2.3 优化 Optimization

w ∗ , b ∗ = arg ⁡ min ⁡ w , b L w^{*},b^{*}=\arg \min_{w,b} L w,b=argw,bminL

找出最好的一组w和b使得L最小

2.3.1 Gradient Descent 梯度下降

  • 一个参数下的情况
    1. 随便选一个初始的 w 0 w^{0} w0
    2. 计算 ∂ L ∂ w ∣ w = w 0 \frac{\partial L}{\partial w}|_{w=w^{0}} wLw=w0 (斜率为负,需要增加w;斜率为正,需要降低w)
    3. 得到 w 1 w^{1} w1 ,公式为

w 1 ⇐ w 0 − η ∂ L ∂ w ∣ w = w 0 w^{1} \Leftarrow w^{0}-\eta\frac{\partial L}{\partial w}|_{w=w^{0}} w1w0ηwLw=w0

  • 两个参数下的情况
    1. 随便选一个初始的 w 0 w^{0} w0, b 0 b^{0} b0
    2. 计算 ∂ L ∂ w ∣ w = w 0 \frac{\partial L}{\partial w}|_{w=w^{0}} wLw=w0 ∂ L ∂ b ∣ b = b 0 \frac{\partial L}{\partial b}|_{b=b^{0}} bLb=b0
    3. 得到 w 1 w^{1} w1, b 1 b^{1} b1

w 1 ⇐ w 0 − η ∂ L ∂ w ∣ w = w 0 , b = b 0 b 1 ⇐ b 0 − η ∂ L ∂ b ∣ w = w 0 , b = b 0 w^{1} \Leftarrow w^{0}-\eta\frac{\partial L}{\partial w}|_{w=w^{0},b=b^{0}}\\b^{1} \Leftarrow b^{0}-\eta\frac{\partial L}{\partial b}|_{w=w^{0},b=b^{0}} w1w0ηwLw=w0,b=b0b1b0ηbLw=w0,b=b0

  • 影响步长大小的两个因素

    1. 斜率:斜率越大跨步就大
    2. 学习率 η \eta η (learning rate): 学习率越大跨步越大,一次改变一点点。这种需要自己设定的数值称为超参数(hyperparameter)。
  • 关于局部最优和全局最优的问题
    在一些书里可以看到
    global minima 全局最优
    local minima 局部最优

  • loss可以为负吗?
    loss是自定义的,如果定义为绝对值,就不为负值,如果定义为普通函数,就可以为负值。

  • 梯度下降什么时候会停?

    1. 失去耐心,比如设定更新一百万次就停止更新(这里的一百万次也是HyperParameter)
    2. 理想停止,即通过参数的调整,发现微分值正好为0,说明达到了理想状况
  • 关于超参数

    • 所有需要考虑的参数都是超参数
    • 如,学习率、步长、loss函数、batch大小等等等等
    • 甚至sigmoid函数的数量也是一个超参数

2.4 修改模型

2.4.1 周期模型

考虑到领域知识(domain knowledge),我们发现点击人数是以一周为一个周期,周期性的进行变化,所以需要将模型修改为周期性表示。

请添加图片描述

新的模型如下所示,相当于有7个weight来衡量一个周期的信息

y = b + ∑ j = 1 7 w j x j y = b+\sum_{j=1}^{7} w_{j}x_{j} y=b+j=17wjxj

2.4.2 分段模型

对于非线性模型,永远无法用线性模型来制造,出现巨大的偏差,称为模型的偏差(model bias)。所以需要更复杂、更灵活、有未知参数的函数来逼近非线性模型。

bias\ model bias(inductive bias)\ variance 之间的区别

  • model bias = inductive bias 归纳偏置 (虽然中文名大多称为归纳偏置,但感觉叫 归纳偏见\归纳偏好 更合适?)。指机器学习算法在学习过程中对数据的偏好或倾向,影响其学习的结果。或是说指机器学习算法在从数据中归纳规律时,所依赖的先验假设,偏好或限制。

    比如CNN在识别猫狗图像时具有这种inductive bias 那么它会倾向于首先检测图像中的边缘和纹理特征,然后使用这些局部特征来推断整个图像的类别,并且会在学习过程中优先考虑不同位置的相同特征,而不是考虑特征的绝对位置。参考知乎

    inductive bias 的意义或作用是使得学习器具有了泛化的能力。

    一些表示inductive bias的方法:

    1. the chioce of model architecture
    2. the selection of features
    3. the type of regularization applied to the model

    在实践中,通常使用具有不同inductive bias的模型架构的组合,并使用交叉验证和正则化等计数来减轻inductive bias对模型性能的影响。

  • bias 模型偏差 。 指样本拟合出的模型的输出结果的期望与样本真实结果的差距,简单讲就是样本上拟合的好不好。(想要bias表现好,即得到low bias,需要需杂化模型,增加模型参数,但容易过拟合(overfitting),导致点很分散,增加variance)

  • variance 方差。 指样本上训练的模型在测试集中的表现,(想要得到low variance,需要简化模型,减少模型参数,但这样容易欠拟合(unfitting),点偏离中心)

  • Error = Bias^2 + Variance + Noise

参考

请添加图片描述

分段线性曲线(piecewise linear curve),即红色函数,可以看成一个常数+一堆蓝色函数,其中蓝色函数称为Hard Sigmiod,它的特性是,x轴的值小于某个阈值或大于某个阈值时,中间有个斜坡(先水平,再斜坡,再水平)。分段线性曲线越复杂,转折的点越多,所需的蓝色函数就越多。

请添加图片描述

分段线性曲线可以逼近任何一个有角度有弧度的曲线。x和y的关系非常复杂也没关系,可以想办法写一个带有未知数的函数的函数来逼近曲线。直接写Sigmoid不是很容易,但可以用一条曲线来理解它,用Sigmoid函数来逼近Hard Sigmoid,表达式为:

y = c 1 1 + e − ( b + w 1 ) y=c\frac{1}{1+e^{-(b+w_{1})}} y=c1+e(b+w1)1

x1趋近于无穷大时,e这一项会消失,x1非常大的时候,这一条就会收敛在高度为c的地方,如果x1负的非常大,分母的地方就非常大,y会趋近于0.

对于其它值固定,改变不同的参数,sigmoid函数的变化如下:

请添加图片描述

对于前面红色函数,可以用不同的sigmoid函数来表示,即

c 1 s i g m o i d ( b 1 + w 1 x 1 ) c 1 s i g m o i d ( b 2 + w 2 x 2 ) c 1 s i g m o i d ( b 3 + w 3 x 3 ) c_{1}sigmoid(b_{1}+w_{1}x_{1})\\c_{1}sigmoid(b_{2}+w_{2}x_{2})\\c_{1}sigmoid(b_{3}+w_{3}x_{3}) c1sigmoid(b1+w1x1)c1sigmoid(b2+w2x2)c1sigmoid(b3+w3x3)

对于周期为一周的函数可以表示为**(这里还不太明白,为什么要设置i行j列的权重)**

y = b + ∑ i c i s i g m o i d ( b i + ∑ j w i j x j ) y=b+\sum_{i}c_{i}sigmoid(b_{i}+\sum_{j}w_{ij}x_{j}) y=b+icisigmoid(bi+jwijxj)

在sigmoid函数内的参数,可以表示为

r 1 = b 1 + w 11 x 1 + w 12 x 2 + w 13 x 3 . . . r1 = b1 + w11x1 + w12x2 + w13x3\\... r1=b1+w11x1+w12x2+w13x3...

通过矩阵和向量的关系,可以得到较为简单的写法

r = b + W x r=b+Wx r=b+Wx

sigmoid函数可以简写为

a = σ ( r ) a =\sigma (r) a=σ(r)

则上述函数可以表示为

y = b + c T σ ( b + W x ) y = b + c T a y=b+c^{T}\sigma (b+Wx)\\y=b+c^{T}a y=b+cTσ(b+Wx)y=b+cTa

对于损失函数,之前是 L ( w , b ) L(w,b) L(w,b),但未知参数太多,一一列举过于复杂,可以直接用 θ \theta θ来代替,即损失函数变为 L ( θ ) L(\theta) L(θ)

下一步是优化 θ \theta θ,对于

θ = [ θ 1 θ 2 . . . ] \theta=\begin{bmatrix} \theta_{1}\\ \theta_{2}\\ ... \end{bmatrix} θ= θ1θ2...

需要找到损失最小的一组 θ \theta θ,要找到 θ 让损失越小越好,可以让损失最小的一组 θ \theta θ称为 θ ∗ \theta^{*} θ。一开始要随机选一个初始的数值 θ0。接下来计算每一个未知的参数对 L 的微分,得到向量 g,即可以让损失变低的函数。

g = ▽ L ( θ 0 ) g = [ ∂ L ∂ θ 1 ∣ θ = θ 0 ∂ L ∂ θ 2 ∣ θ = θ 0 . . . ] g=\bigtriangledown L(\theta_{0})\\ g=\begin{bmatrix} \frac{\partial L}{\partial \theta_{1}}|_{\theta=\theta_{0}}\\ \frac{\partial L}{\partial \theta_{2}}|_{\theta=\theta_{0}}\\ ... \end{bmatrix} g=L(θ0)g= θ1Lθ=θ0θ2Lθ=θ0...

对于更新过程,矩阵表示如下

请添加图片描述

文字表述如下

请添加图片描述

实际在做梯度的时候,会把N笔数据随机分成一个一个batch,每个batch里有B笔数据。本来把所有的数据拿出来算一个损失,现在拿很多个batch算多个损失,每个batch计算的损失记为 L n L_{n} Ln以区分 L L L。所以实际上每次会先选一个batch,用该批量计算 L 1 L_{1} L1。根据 L 1 L_{1} L1来计算梯度,再用梯度来更新参数;接着使用下一个batch,计算 L 2 L_{2} L2,再次计算梯度并更新参数。(batch大小也是一个hyperparameter)

请添加图片描述

2.4.3 ReLU函数

ReLU=Rectified Linear Unit,修正线性单元

对于激励函数,不一定要把Hard Sigmiod换成Soft Sigmoid。一个Hard Sigmoid可以看作是两个ReLU的加总,其对应的公式为

c ∗ max ⁡ ( 0 , b + w x 1 ) c*\max(0,b+wx_{1}) cmax(0,b+wx1)

请添加图片描述

使用ReLU函数可以制造更复杂的曲线。接着可以通过增加层数来反复多做几次运算,可以显著降低误差。

请添加图片描述

经过预测后,发现在红圈位置的预测值偏差过大,因为这里涉及到一些经验问题(当天是除夕)。

2.4.4 小结

Sigmoid函数或ReLU称为神经元neuron,很多神经元称为神经网络neural network。每一层称为隐藏层hidden layer,很多的隐藏层就“深”,称为深度学习。

请添加图片描述

但4 层在训练数据上,损失是 0.1k,在没有看过 2021 年的数据上,损失是 0.44k。在训练数据上,3 层比 4 层差,但是在没看过的数据上,4 层比较差,3 层比较好。在训练数据和测试数据上的结果是不一致的,这种情况称为过拟合(overfitting)。

另外深度学习的训练会用到反向传播(BlackPropagation,BP),以后会概述。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/712577.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

postgresql 获取建表信息

通过函数获取 创建自定义函数 CREATE OR REPLACE FUNCTION tabledef(text,text) RETURNS text LANGUAGE sql STRICT AS $$ WITH attrdef AS (SELECT n.nspname, c.relname, c.oid, pg_catalog.array_to_string(c.reloptions || array(select toast. || x from pg_catalog.un…

7.1.9 【Linux】XFS 文件系统简介

EXT当前的缺点:支持度最广,但格式化超慢 Ext 文件系统家族对于文件格式化的处理方面,采用的是预先规划出所有的 inode/block/metadata 等数据,未来系统可以直接取用, 不需要再进行动态配置的作法。这个作法在早期磁盘…

14 动态主题类型Dynamic Topic Types

14 动态主题类型Dynamic Topic Types eProsima Fast DDS提供了一种动态方式来定义和使用主题类型和主题数据。我们的实现遵循用于DDS接口的OMG可扩展和动态主题类型。有关更多信息,您可以阅读DDS XTypes V1.2的规范。 动态主题类型提供了在没有与IDL相关的限制的情况下通过RTP…

vscode文档搜索机制

vscode的全局搜索速度非常快,其中的奥妙是什么? 我们常常需要在一大堆文本文件里搜索一个字符串,在Linux下可以用自带的grep,不过grep的命令行还是有点难记。ripgrep是开源工具,使用Rust编写,全平台支持。看…

工业RFID在自动化控制中的解决方案

在工业自动化控制领域中,利用RFID技术可以对物品、设备和工具的进行追踪,可以有效提高生产效率和管理水平。下面我们就一起来了解一下,RFID在工业自动化控制中的解决方案是什么样的。 工业RFID在自动化控制中的解决方案 在工业生产过程中&a…

ai图片转绘画怎么转?分享几个ai图片生成绘画软件给你

小伙伴们,我今天要给你分享一些超酷的东西——ai图片生成器,它们就像是一个神奇的艺术宝盒,可以将你的文字变成令人瞠目结舌的艺术作品。你有没有想象过可以用ai技术让你的文字爆发出无限创意和惊人的艺术风格?没错,这…

共享打印机突然出现0x00000771

操作无法完成0x00000771 当多台电脑共享一台打印机时,突然出现了操作无法完成0x00000771。 解决方法为: 在直接连接打印机的电脑上进行操作: 选中“此电脑”,右键选中“管理” 打开“服务与应用程序” 选择" 服务 ",找…

与 TDengine 性能直接相关——3.0 的落盘机制优化及使用原则

许多用户会有一个疑问,“落盘”俩字听起来就很底层,似乎无法和手头的性能问题联系到一起,本篇文章的目的就是让大家对它们俩建立起直观的认识。 写到数据库的数据总要保存起来——所以时序数据库(Time Series Database&#xff0…

移动隔断屏风墙,无地轨设计,空间灵活应用

移动隔断屏风墙是一种非常适合办公室的设计选择,它可以提供灵活的办公空间布局,并且无地轨设计可以避免地面安装轨道,给空间带来更大的自由度。以下是一些关于移动隔断屏风墙的特点和设计建议: 1. 灵活应用:移动隔断屏…

JavaScript多功能甘特图组件 - jsGantt

jsGantt 是一个可定制的、灵活的、多语言的甘特图组件,由原生 JavaScript 构建。它使用客户端渲染以获得快速的性能和动态的交互性。非常适用于任何需要交互式时间线或时间表显示的项目。 更多特点 多语言支持: 通过对多语言的支持,使您的甘…

容器技术与容器编排系统详解

一、Docker 容器技术 概括起来,Docker 容器技术有3个核心概念容器、镜像和镜像仓库。如果把容器类比为动态的、有生命周期的进程,则镜像就像是静态的可执行程序及其运行环境的打包文件,而镜像仓库则可想象成应用程序分发仓库,事先…

6.30学习-函数柯里化,回调解决异步多线程

6.30学习-函数柯里化,回调解决异步多线程 1.函数柯里化1.1 确定参数的函数柯里化1.2参数不确定的函数柯里化1.3 用法1.3.1 给setTimeout传递进来的函数添加参数 2.回调解决异步多线程 1.函数柯里化 函数柯里化,经常可能就面试的时候听说过,反…

【Unity3D编辑器开发】Unity3D中初次尝试使用PropertyDrawer属性

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 前段时间一直比较忙,没有时间更新博客,…

SSH连接vmware 虚拟机 centos

检查虚拟机设置的网络连接是否为NAT模式 点击左上角“编辑” -> “虚拟网络编辑器” 在虚拟网络编辑器中查看IP地址 ,点击NAT模式后,点击“NAT设置 记住自己的网关,下面在服务器中配置需要 进入服务器的 /etc/sysconfig/network-scripts/ 编辑 i…

Java性能权威指南-总结22

Java性能权威指南-总结22 对象序列化追踪对象复制 Java EE网络API小结 对象序列化 追踪对象复制 先介绍一个示例,如何不对对象引用进行序列化,以避免在反序列化时处理对象引用。然而,writeobject()中最有力的优化是不重复输出对象引用。 在…

强大业务体系支撑,亚马逊云科技占据近八成中国企业出海总销量

从人类发展历史上看,无论是刳木为舟,剡木为楫,还是郑和下西洋,亦或是欧洲大航海时代,人类对于出海探索这件事就从未停止。而在如今的时代,相似的故事依旧在上演。过去的十年,是中国互联网最为繁…

一文了解AppSec,以及如何通过Perforce工具保障应用程序防护

应用程序防护(AppSec)是有效且高效的安全措施,有助于帮助软件应用程序解决日益严重的安全威胁。本篇文章将讨论应用程序防护(AppSec)的原理、最佳实践以及您应该使用什么AppSec工具。 什么是AppSec? AppS…

近视眼选择什么台灯好一点?高品质护眼台灯推荐

目前我国儿童以及青少年的近视率达到53.7%,且近视发病率不断呈现低龄化趋势,导致近视的主要是因为用眼过度。而电子产品的普及,网课、打游戏、刷短视频等,被许多家长认为是导致近视的主要原因,其往往忽略掉了一个很重要…

springboot社区服务系统-计算机毕设 附源码77279

springboot社区服务系统 摘 要 科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中&a…

Unity游戏开发之游戏动画(模型动画制作及导入)

一. 简单制作3D角色 在stream中下载Fuse软件在Fuse中制作人物,导出模型为OBJ格式(注意:这里导出目录必须为英文路径,否则只能导出空的OBJ文件)压缩Obj文件为zip格式打开Mixamo网站:https://www.mixamo.com…