Machine Learning:Introduction

news2025/2/11 23:39:45

文章目录

    • 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.coloradmin.cn/o/2296554.html

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

相关文章

Excel 笔记

实际问题记录 VBA脚本实现特殊的行转列 已知:位于同一Excel工作簿文件中的两个工作表:Sheet1、Sheet2。 问题:现要将Sheet2中的每一行,按Sheet1中的样子进行转置: Sheet2中每一行的黄色单元格,为列头。…

基于 GEE 利用插值方法填补缺失影像

目录 1 完整代码 2 运行结果 利用GEE合成NDVI时,如果研究区较大,一个月的影像覆盖不了整个研究区,就会有缺失的地方,还有就是去云之后,有云量的地区变成空值。 所以今天来用一种插值的方法来填补缺失的影像&#xf…

如何在浏览器中搭建开源Web操作系统Puter的本地与远程环境

文章目录 前言1.关于Puter2.本地部署Puter3.Puter简单使用4. 安装内网穿透5.配置puter公网地址6. 配置固定公网地址 前言 嘿,小伙伴们!是不是每次开机都要像打地鼠一样不停地点击各种网盘和应用程序的登录按钮,感觉超级麻烦?更让…

使用EVE-NG-锐捷实现单臂路由

一、基础知识 1.三层vlan vlan在三层环境中通常用作网关vlan配上ip网关内部接口ip 2.vlan创建步骤 创建vlan将接口划分到不同的vlan给vlan配置ip地址 二、项目案例 1、项目拓扑 2、项目实现 PC1配置 配置PC1IP地址为192.168.1.10/24网关地址为192.168.1.1 ip 192.168.1…

二、通义灵码插件保姆级教学-IDEA(使用篇)

一、IntelliJ IDEA 中使用指南 1.1、代码解释 选择需要解释的代码 —> 右键 —> 通义灵码 —> 解释代码 解释代码很详细,感觉很强大有木有,关键还会生成流程图,对程序员理解业务非常有帮忙,基本能做到哪里不懂点哪里。…

HAL库外设宝典:基于CubeMX的STM32开发手册(持续更新)

目录 前言 GPIO(通用输入输出引脚) 推挽输出模式 浮空输入和上拉输入模式 GPIO其他模式以及内部电路原理 输出驱动器 输入驱动器 中断 外部中断(EXTI) 深入中断(内部机制及原理) 外部中断/事件控…

HarmonyOS 5.0应用开发——ContentSlot的使用

【高心星出品】 文章目录 ContentSlot的使用使用方法案例运行结果 完整代码 ContentSlot的使用 用于渲染并管理Native层使用C-API创建的组件同时也支持ArkTS创建的NodeContent对象。 支持混合模式开发,当容器是ArkTS组件,子组件在Native侧创建时&#…

[AI]Mac本地部署Deepseek R1模型 — — 保姆级教程

[AI]Mac本地部署DeepSeek R1模型 — — 保姆级教程 DeepSeek R1是中国AI初创公司深度求索(DeepSeek)推出大模型DeepSeek-R1。 作为一款开源模型,R1在数学、代码、自然语言推理等任务上的性能能够比肩OpenAI o1模型正式版,并采用MI…

群晖NAS如何通过WebDAV和内网穿透实现Joplin笔记远程同步

文章目录 前言1. 检查群晖Webdav 服务2. 本地局域网IP同步测试3. 群晖安装Cpolar工具4. 创建Webdav公网地址5. Joplin连接WebDav6. 固定Webdav公网地址7. 公网环境连接测试 前言 在数字化浪潮的推动下,笔记应用已成为我们记录生活、整理思绪的重要工具。Joplin&…

CSS3+动画

浏览器内核以及其前缀 css标准中各个属性都要经历从草案到推荐的过程,css3中的属性进展都不一样,浏览器厂商在标准尚未明确的情况下提前支持会有风险,浏览器厂商对新属性的支持情况也不同,所有会加厂商前缀加以区分。如果某个属性…

C++ list介绍

文章目录 1. list简介2. list的实现框架2.1 链表结点2.2 链表迭代器2.3 链表 3. list迭代器及反向迭代器设计3.1 list迭代器3.2 list反向迭代器3.3 list迭代器失效 4. list与vector比较 1. list简介 list,即链表。 链表的种类有很多,是否带头结点&#…

Java - 在Linux系统上使用OpenCV和Tesseract

系统环境 确保Linux系统安装了cmake构建工具,以及java和ant(这两者如果没有,可能会影响到后面编译opencv生成.so和.jar文件)。 sudo apt-get update sudo apt-get install build-essential sudo apt install cmake build-essen…

自有服务与软件包

—— 小 峰 编 程 目录 ​编辑 一、自有服务概述 二、systemctl管理服务命令 1、显示服务 2、查看启动和停止服务 3、服务持久化 三、常用自有服务(ntp,firewalld,crond) 1、ntp时间同步服务 1)NTP同步服务器原理 2)到哪里去找NPT服务…

Python 鼠标轨迹 - 防止游戏检测

一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序,它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言,原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势: 模拟…

chrome-mojo C++ Bindings API

概述 Mojo C 绑定 API 利用C 系统 API提供一组更自然的原语,用于通过 Mojo 消息管道进行通信。结合从Mojom IDL 和绑定生成器生成的代码,用户可以轻松地跨任意进程内和进程间边界连接接口客户端和实现。 本文档通过示例代码片段提供了绑定 API 用法的详…

java: framework from BLL、DAL、IDAL、MODEL、Factory using oracle

oracel 21c sql: -- 创建 School 表 CREATE TABLE School (SchoolId CHAR(5) NOT NULL,SchoolName NVARCHAR2(500) NOT NULL,SchoolTelNo VARCHAR2(8) NULL,PRIMARY KEY (SchoolId) );CREATE OR REPLACE PROCEDURE addschool(p_school_id IN CHAR,p_school_name IN NVARCHAR2,p…

Ubuntu22.04部署deepseek大模型

Ollama 官方版 Ollama 官方版: https://ollama.com/ 若你的显卡是在Linux上面 可以使用如下命令安装 curl -fsSL https://ollama.com/install.sh | shollama命令查看 rootheyu-virtual-machine:~# ollama -h Large language model runnerUsage:ollama [flags]ollama [comman…

Redis数据库(二):Redis 常用的五种数据结构

Redis 能够做到高性能的原因主要有两个,一是它本身是内存型数据库,二是采用了多种适用于不同场景的底层数据结构。 Redis 常用的数据结构支持字符串、列表、哈希表、集合和有序集合。实现这些数据结构的底层数据结构有 6 种,分别是简单动态字…

网络安全溯源 思路 网络安全原理

网络安全背景 网络就是实现不同主机之间的通讯。网络出现之初利用TCP/IP协议簇的相关协议概念,已经满足了互连两台主机之间可以进行通讯的目的,虽然看似简简单单几句话,就描述了网络概念与网络出现的目的,但是为了真正实现两台主机…

BS架构(笔记整理)

楔子.基本概念 1.在网络架构中: 服务器通常是集中式计算资源,负责处理和存储数据;客户机是请求这些服务的终端设备,可能是个人电脑或移动设备;浏览器则是客户机上用来与服务器交互的工具,负责展示网页内容…