当前位置: 首页 > article >正文

Machine Learning:Introduction

文章目录

    • Machine Learning
    • Training
      • Step 1.Contract Function with Unknown Parameters
      • Step 2.Define Loss from Training Data
      • Step 3.Optimization
    • Linear Model
      • Piecewise Linear Curve
      • Beyond Piecewise Liner?
        • Function
        • Loss
        • Optimization
      • Model Deformation

Machine Learning

​ 机器学习就是让机器具备学习的能力,具体而言,是让机器具备找一个函数的能力,具此能力找到一个函数后,可以将某输入转化成某输出,例如:AlphaGo的输入是一个棋盘的当前状态或图片,输出即为下一步最佳落子位置.

​ 根据要找的函数不同,可以将机器学习分为多种类别:

  • 回归(regression):假设要找的函数的输出是一个数值,一个 标量(scalar),这种机器学习的任务称为回归.如房价预测.
  • 分类(classification):分类任务要让机器做选择题。 人类先准备好一些选项,这些选项称为类别(class),现在要找的函数的输出就是从设定好的 选项里面选择一个当作输出,该任务称为分类.如垃圾邮件识别.

​ 在机器学习领域里面,除了回归跟分类以外,还有结构化学习(structured learning)。机 器不只是要做选择题或输出一个数字,而是产生一个有结构的物体,比如让机器画一张图,写 一篇文章。这种叫机器产生有结构的东西的问题称为结构化学习。

Training

Step 1.Contract Function with Unknown Parameters

Model: y=b+w*x (based on domain knowledge)

Feature: y (output) x(input)

Parameters: w(weight) b(bias)

Step 2.Define Loss from Training Data

Loss也是一个函数 -> L(b,w) => how good a set of values is

通过代入实际参数,以及x,获得y,与真实值(label)计算差距e,最后计算累加平均
L = 1 N ∑ e n L=\frac{1}{N}\sum e_n L=N1en
其中,N 代表训验数据的个数,计算出一个 L,L 是每一笔训练数据的误差 e 相加以后的结果。L 越大,代表现在这一组参数越不好,L 越 小,代表现在这一组参数越好。

​ 估测的值跟实际的值之间的差距,其实有不同的计算方法,计算绝对值的差距,,称为平均绝对误差(Mean Absolute Error,MAE)。

e = ∣ y ^ − y ∣ e=|\widehat{y}-y| e=y y

​ 如果算平方的差距,则称为均方误差(Mean Squared Error,MSE)。

e = ( y ^ − y ) 2 e=(\widehat{y}-y)^2 e=(y y)2
​ 有一些任务中 y 和 标签 都是概率分布,这个时候可能会选择交叉熵(cross entropy)

​ 根据不同参数所得损失画出的等高线图称为误差表面(error surface)

image-20250209175809764

Step 3.Optimization

找到一个w*,b*= arg min L(w,b)

如何找到? -> 梯度下降法(Gradient Descent)

  1. 随机选取初始值 w0(或b0)
  2. 计算偏导(梯度值)
  3. 根据梯度值对w更新,使变换后的新梯度下降
  4. 斜率大小和预设learning rate 决定步进速度(hyperparameter-超参数->预设)

image-20250209181846979

缺点:从本例中可以明显看出,梯度下降法可能只能找到局部最小值,而非全局最小值

但是,局部最小值算得上一个真正的问题吗?


Linear Model

在机器学习中,线性模型和非线性模型指的是模型如何处理输入数据以预测输出。

  • 线性模型 线性模型假设输入特征(比如房屋面积、房间数量等)与目标变量(比如房价)之间的关系是线性的。这意味着每个输入特征对目标变量的影响是独立的,并且这种影响是成比例的。简单来说,如果画出这些关系图,它们会形成一条直线或一个平面。例如,预测房价,把房子面积当作一个特征 ,如果是线性关系,可能就是房价等于面积乘以一个价格系数再加上一个固定值,意味着面积每增加一定量,房价就会按照固定幅度增加。
  • 非线性模型 非线性模型则认为输入特征和目标变量之间的关系不是简单的直线关系。换句话说,非线性模型能够捕捉到输入特征与目标变量之间更复杂的关系。这些关系不能通过直线或者平面来表示。比如预测一个城市的犯罪率,可能和人口密度、教育水平、经济发展程度等多个特征有关,这些特征和犯罪率之间的关系不是简单的比例关系,可能人口密度达到一定程度后,犯罪率增长的速度会变快,这就是非线性关系。

线性模型对于实际问题可能过于简单,因为x和y之间可能有比较复杂的关系,这种限制被称为Model Bias

image-20250210104217595

Piecewise Linear Curve

如图所示,线性模型有很大的限制,无法表示红色的情况.而红色线,即分段线性曲线(piecewise linear curve)可以看作是一个常数,再加上一堆蓝色的函数

image-20250210120627125

Beyond Piecewise Liner?

Function

在分段线性曲线上取足够多且位置合适的点,分段线性曲线就可以逼近这一个连续的曲线,就可以逼近有角度的、有弧度的这一条曲线。 所以可以用分段线性曲线去逼近任何的连续的曲线,而每个分段线性曲线都可以用一大堆蓝色的函数组合起来。

image-20250210140320792

如何构造一些蓝色函数,x和y的关系比较复杂时,并不容易直接写出,但是可以用一条曲线来理解它,即用Sigmoid函数逼近Hard Sigmoid,其表达式为:
y = c ∗ 1 1 + e − ( b + w x ) y=c*\frac{1}{1+e^{-(b+wx)}} y=c1+e(b+wx)1
其横轴输入为x1,输出为y, c为常数:

image-20250210141554463

显然,y会收敛于0~c之间,也可以写成y=c*sigmoid(b+wx1),这样通过修改参数,构造不同的sigmoid

组合不同sigmoid函数,就完成了对原始分段线性曲线的逼近了

image-20250210143126303

此外,我们可以不只用一个特征x1,可以用多个特征代入不同的c, b,w,组合出各种不同的函数,至此完成从线性到非线性,从简单函数 到更有灵活性(flexibility)的函数:

image-20250210143252168

形象化如下图:

image-20250210154208298

至此,我们完成了模型构造

Loss

损失函数的参数变更为提取出的未知参数集

image-20250210161926013

Optimization

在参数比较少的情况下,我们可以直接进行枚举,得到最小损失的参数,然而,由于参数非常多,必须采用一些如梯度下降的优化技巧来更好的降低损失

image-20250210162058007

通过此过程计算出梯度为0向量,导致无法再更新参数为止,不过在实现上几乎不太可能梯度为0,通常会停下来就是我们不想做了。

在实际梯度下降过程中,会把数据随机分成多个batch,进行分组计算损失,每个batch计算出损失后,根据其计算梯度,再更新参数.按这种分组方法将全部数据计算过一次后,称为一个epoch

Model Deformation

之前,我们用Sigmoid函数来逼近Hard Sigmoid,事实上,Hard Sigmoid可以看作两个Rectified Linear Unit (ReLU)的合并,其公式为:
c ∗ m a x ( 0 , b + w x ) c*max(0,b+wx) cmax(0,b+wx)
image-20250210165930330

诸如此类的函数,称之为激活函数,通过增加更多激活函数逼近真实情况,但是效果仍有限,于是对模型进行改进,将一次输出作为输入再次进入新模型优化,这样就产生了一个类似人脑神经元的模型.

image-20250210171727059

如上图,Sigmoid 或ReLU 称为神经元(neuron),很多的神经元称为神经网络(neural network),人脑中就是有很多神经元,很多神经元串起来就是一个神经网络,将每排神经元看作一层,称为隐藏层(hidden layer),这套技术就称为了深度学习.


http://www.kler.cn/a/541548.html

相关文章:

  • 深度学习-交易预测
  • Golang Web单体项目目录结构最佳实践
  • PDF 文件的安全功能概述
  • 循环神经网络学习01——transformer:输入部分-嵌入层位置编码
  • 多光谱成像技术在华为Mate70系列的应用
  • 物品匹配问题-25寒假牛客C
  • 【Ubuntu VScode Remote SSH 问题解决】Resolver error: Error: XHR failed
  • 如何使用 DataX 连接 Easysearch
  • 鸿蒙NEXT开发-鸿蒙三方库
  • html文件怎么转换成pdf文件,2025最新教程
  • electron.vite 项目创建以及better-sqlite3数据库使用
  • 基于SpringBoot的公益社团管理系统
  • Windows逆向工程入门之汇编数据存储\宽度,内存地址及边界,数据截断处理
  • 003 Linux驱动开发——第一个简单开发实验
  • python动物识别深度学习分析系统
  • 2.1 JUnit 5 测试发现机制详解
  • Dify 框架连接 PGSQL 数据库与 Sandbox 环境下的 Linux 系统调用权限问题
  • 什么是动态路由和嵌套路由?
  • Unity快速入门2 - 3D渲染
  • 【Python深入浅出】Python3邂逅MySQL:开启数据交互之旅
  • Python+wxauto:实现电脑端微信程序自动化
  • JDBC数据库连接池及相关练习(学习自用)
  • 云原生周刊:DeepSeek 颠覆人工智能
  • 基于springboot+vue的校园招聘网站的设计与实现
  • 《手札·数转篇》中小制造企业的信息化升级:MES系统的价值与应用
  • mysql 不是内部或外部命令,也不是可运行的程序或批处理文件