【机器学习】机器学习的基本概念

news2024/11/13 19:25:45

机器学习是我们现在接触人工智能领域首先要去掌握的知识,下面是我学习记录的一些关于机器学习的基础、常见的概念和定义。

目录

机器学习定义

机器学习过程

假设关系

训练数据

损失函数(正向传播)

优化(反向传播)

激活函数函数和向量化

训练

深度学习


机器学习定义

机器学习总的来说就是寻找一种适合的映射关系f,帮助我们将某些输入信息按照我们的需求转化输出为另外一种信号,教会机器去模仿人类的功能。例如将音频输出为文字、图片输出为文字等,而这种对应关系往往是我们所难以寻找到。

深度学习是机器学习的一种分支,它继承自机器学习的部分概念,它与机器学习的区别是它的对应关系是一个神经网络

深度学习的函数f也可以根据它的输入和输出分不同的类别。它的输入可以是一个向量、矩阵或者一组序列(语言、音频);而经过对应关系f的处理后,它的输出可以是一个数值(回归regression)、一种类别(分类classification)、文本或者一张图片(结构整体structured Learning)。

机器学习过程

假设关系

在进行机器学习之前,我们首先需要猜测这个对应的映射关系f。例如我们要根据今天的气温预测明天的气温。那我们可以先假设明天的气温为y,而映射关系是y=wx+b,当然,这个式子也是我假设的。其中w就是权重(weight),而b就是偏置(bias),b和w统称为参数(parameter)。而已有的数据x就是特征(feature),真实的数据y\widehat{}被称为标签(label)而整个函数式子就是模型(model)。

训练数据

然后需要收集一些足够的数据,这些数据需要有明确的类别标签。例如我们需要让机器分辨出猫🐱和狗🐕,那我们首先需要有许多分好类别的训练数据,传输给机器,让机器知道这只是猫、而那只是狗。这个过程就是对机器进行训练的过程。

损失函数(正向传播)

然后我们需要定义一个损失函数loss(L(w,b)它是w和b的函数),这个函数表示的是训练出来的数据y和它原本真实的数据y\widehat{}之间的差距。就拿回预测天气的模型,假如我们初始设定w=w_{1},b=b_{1},而带入某天x算出来的温度是y_{1}而实际是y\widehat{}_{1},我们记录它们之间的差距为e_{i}e_{i}有很多种不同的计算方法:

e = |y-y\widehat{}|(MAE)

e = (y - y\widehat{})^{2}(MSE)

③else..

而对于所有数据求出来的误差求平均就可以得到我们需要的损失函数L = \frac{1}{N}\sum e_{i}。结合上面的例子,我们可以很明显看出损失函数Loss是w,b的函数关系式并且Loss函数最小时预测的数据和真实的数据最接近。取不同的w和b,得到的Loss函数的数值也不同。

优化(反向传播)

优化(optimization)就是寻找一组最优的w和b使得Loss函数最小的过程,而我们最常用的优化方式是梯度下降法

假设我们有了一个模型y=wx+b,现在我们要对这个模型进行优化。现在我们先固定住b,只取不同的w的情况下假设Loss函数的取值如下图所示。在图中我们任意取一个点w_{0}作为任意初始的w,现在我们需要让w往绿色圈内靠拢(Loss变小)。而我们的更新方法是对w进行微分,算出\frac{dL}{dw},而这个算出的\frac{dL}{dw}就是当前w所在位置对应于Loss损失函数图线上点的斜率,利用这个斜率我们可以将w进行移动(更新),而更新的式子是w_{i}=w_{i-1} - \alpha\frac{dL}{dw},仔细观察式子,我们可以看出式子里面的导数部分代表的是每次更新的方向,而α(学习率)表示的是每次更新的步长。假设是现在微分的是初始的w_{0},我们可以求出它的\frac{dL}{dw}是一个正的数值, 而我们带入式子刚好对w_{0}进行减法操作,将w的值正合我们意地变小了,那么更新后的w_{1}可以很明显看出是往左边移动的,更加靠近绿圈。

类似地,我们可以将b和w同时考虑,只不过此时的Loss函数变成一个三维立体的函数,而微分不是求导而是求偏导了。

w_{i}=w_{i-1} - \alpha\frac{\partial L}{\partial w}

 b_{i}=b_{i-1} - \alpha\frac{\partial L}{\partial b}

激活函数函数和向量化

我们知道,前面我们假设的模型是一个一次函数模型,也是一个线性的模型(Linear Model),但是很多情况下我们实际情况的模型不一定非得是一个一次函数状的模型,它可以是折线组成的图形,也可以是曲线图形。

在这种情况下,我们之前使用的一次函数斜线模型就没有办法很好地去表示了。不过我们还是有方法的。我们可以用很多条折线通过重叠去逼近这个图形,当我们的将该图形分成的折线越多,那么我们模拟出来的图形将会更加接近真实的图形。例如下面红色的连续折线可以通过将4条(第0条是y轴的偏置平行于x轴)分别表示不同x区域特性的蓝色折线相加而成。

 

而这些蓝色折线我们可以看到它们都有一个相似的结构特点,它们都是从下面左图这种类型的曲线演变而来(或平移、对称、拉伸等)。

 

而这类折线我们可以通过一个曲线函数来模拟,这个函数就是sigmoid函数激活函数),它如上面右图所示,长得还是很像左边的折线的。它的表达式是y = c\frac{1}{1+e^{-(wx+b)}},我们可以通过变换w,b和c的值来让sigmoid函数平移、拉伸和对称,让它和折线一样可以进行变换。当然我们的一个图形可不止一段折线,它可以由多段折线堆叠而成,即我们需要多个sigmoid函数。所以往往最后我们的的结果是:y = b + \sum_{i=1}^{n}c_{i}\frac{1}{1+e^{-(xw_{i}+b_{i})}}也可以将其写为:y = b + \sum_{i=1}^{n}sigmoid(xw_{i}+b_{i})

现在假如我们y不仅取决于一个特征x,而是取决于多个特征,那么上面的式子我们可以重写为:

y = b + \sum_{i=1}^{n}sigmoid(\sum_{j=1}^{m}xw_{ij}+b_{i}),如果m=3那么每一个 i 列出的式子如下:

\left\{\begin{matrix} r_{1} = w_{11}x_{1}+w_{12}x_{2}+w_{13}x_{3}+b_{1}\\ r_{2} = w_{21}x_{1}+w_{22}x_{2}+w_{23}x_{3}+b_{2} \\ r_{3} = w_{31}x_{1}+w_{32}x_{2}+w_{33}x_{3}+b_{3} \end{matrix}\right.

为了方便运算,我们可以将其转换为矩阵的形式:

\begin{bmatrix} r_{1}\\ r_{2}\\ r_{3} \end{bmatrix} =\begin{bmatrix} w_{11} &w_{12} &w_{13} \\ w_{21}&w_{22} & w_{23}\\ w_{31}&w_{32} &w_{33} \end{bmatrix}\begin{bmatrix} x_{1}\\ x_{2}\\ x_{3} \end{bmatrix}+\begin{bmatrix} b_{1}\\ b_{2}\\ b_{3} \end{bmatrix}

即最后的式子是:y = b + c^{T} (xw+b),对应的变换关系如下。

我们可以将这个模型所有需要训练的参数w、b、c等都竖向放入堆叠入一个向量里面,并且无论是w、b还是c我们都用θ符号来统一标号代替它们。并且将这些θ都创建为向量可以帮助我们更好地去更新参数。

\begin{bmatrix} \theta _{new(1)}=\theta_{old(1)}-\alpha \frac{\partial L}{\partial \theta } \\ \theta _{new(2)}=\theta_{old(2)}-\alpha \frac{\partial L}{\partial \theta }\\ \theta _{new(3)}=\theta_{old(3)}-\alpha \frac{\partial L}{\partial \theta }\\ \theta _{new(4)}=\theta_{old(4)}-\alpha \frac{\partial L}{\partial \theta }\\ ... \end{bmatrix}

训练

事实上,我们每一次训练都不是一次性对全部的数据都跑一次,然后再统一更新参数。而是将数据都分成几个部分,每一个部分的数据拿去跑一遍,然后每一次跑完都更新一次参数。而这些分成的部分我们称其为batch,每跑完全部的batch我们称为epoch

深度学习

前面我们设计的模型是有特征的矩阵输入到激活函数,然后激活函数计算后输出,里面的每一个计算单元就是一个神经元,而一层竖排的神经单元就是一层这一整套构成的系统就是神经网络。但是我们仍可以在第一层的激活函数后面再加上一套相同的神经网络,这样我们就可以构成深层神经网络,这种技术就叫做深度学习。

虽然层数对于预测的精准度有很大的影响,但是这并不代表着层数越深就越精确。有时候过深的层数对于已知数据可能比较精确但是对于位置数据的预测可能甚至不如低层的神经网络,这就是过拟合问题。


参考资料:

李宏毅老师网课

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

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

相关文章

PC市场:寒冬敲响警钟,蓄势待发的复兴之路

近年来,PC市场的增长确实放缓,但这并不意味着它已经进入了寒冬。相反,PC市场正在蓄势待发,寻找复兴之路。 首先,PC市场仍然是一个巨大的市场。尽管移动设备的普及使得一些用户更多地使用手机和平板电脑,但…

C++:虚函数

C面向对象的三个特性,封装继承多态。在继承的关系中,所有的东西都可以被继承下来,如数据可以被继承下来在内存,而函数的继承则是继承调用权。 虚函数主要是通过虚函数表来实现,每个类都有自己的虚表,当你创…

RevCol:大模型架构设计新范式,给神经网络架构增加了一个维度!

点击蓝字 关注我们 关注并星标 从此不迷路 计算机视觉研究院 公众号ID|计算机视觉研究院 学习群|扫码在主页获取加入方式 论文地址:https://arxiv.org/pdf/2212.11696.pdf 项目代码:https://github.com/megvii-research/RevCol 计…

把金融航母开进智能峡湾,总共分几步?

试想一下,有这么一家街头小店。夫妻两个勤奋经营,诚信待客,广受街里街坊的欢迎。他们流水稳定,蒸蒸日上,商业信誉很好,甚至是非物质文化遗产的传承者。这样一家店,在扩大经营,拓展业…

SpringBoot集成WebSocket实现消息实时推送(提供Gitee源码)

前言:在最近的工作当中,客户反应需要实时接收消息提醒,这个功能虽然不大,但不过也用到了一些新的技术,于是我这边写一个关于我如何实现这个功能、编写、测试到部署服务器,归纳到这篇博客中进行总结。 目录 …

C语言代码函数栈帧的创建与销毁(修炼内功)

目录 在前期的学习中我们可能有很多困惑 例如:局部变量是怎么创建的 为什么局部变量的值是随机值 函数是怎么样传参的 传参的顺序是什么 形参和实参的关系是什么 函数调用是怎么做的 函数掉调用结束后怎么返回的 这篇博客我们来修炼自己的内功,掌握好这篇…

【MATLAB第42期】基于MATLAB的贝叶斯优化决策树分类算法与网格搜索、随机搜索对比,含对机器学习模型的评估度量介绍

【MATLAB第42期】基于MATLAB的贝叶斯优化决策树分类算法与网格搜索、随机搜索对比,含对机器学习模型的评估度量介绍 网格搜索、随机搜索和贝叶斯优化是寻找机器学习模型参数最佳组合、交叉验证每个参数并确定哪一个参数具有最佳性能的常用方法。 一、 评估指标 1、…

STM32F103基于HAL工程挂载FatFS驱动SD卡

STM32F103基于HAL工程挂载FatFS驱动SD卡 📌基于标准库驱动《STM32挂载SD卡基于Fatfs文件系统读取文件信息》 🎬驱动实验效果: 🔨通过STM32cubemx配置SPI1作为访问SD、TF卡通讯方式。 🔧在STM32cubemx配置中挂载中…

Scala入门【变量和数据类型】

目录 Scala基本认知 Hello Scala 方法的定义 伴生对象 Java: Scala: 2、变量和数据类型 2.1、注释 2.2、变量和常量 Java中的变量和常量 Scala基本语法 2.3、标识符 2.4、字符串 基本语法 2.5、标准输入输出 基本语法 2.6、文件的读写 …

6-8 二分查找

今天是端午节,祝大家端午节快乐~ 竟然这样,还不点点赞。 言归正传┏ (゜ω゜)☞ 目录 引入 二分查找算法思想 时间复杂度O(logN) 二分查找算法描述 二分查找算法的框架如下: 例题1: 例题2&#x…

秒懂SpringBoot之如何集成SpringDoc(全网目前最新最系统最全面的springdoc教程)

[版权申明] 非商业目的注明出处可自由转载 出自:shusheng007 文章目录 概述概念解释SpringDoc使用简单集成配置文档信息配置文档分组使用注解TagOperationSchemaParameterParametersApiResponses 和ApiResponse 认证授权无需认证需要认证 总结源码 概述 近来颇为懈…

13. WebGPU 正交投影

在上一篇文章中,讨论了矩阵的工作原理。讨论了如何通过 1 个矩阵和一些神奇的矩阵数学来完成平移、旋转、缩放,甚至从像素到裁剪空间的投影。实现 3D 操作 只需要再向前迈一小步。 在之前的 2D 示例中,将 2D 点 (x, y) 乘以 3x3 矩阵。要实现…

【机器学习】——续上:卷积神经网络(CNN)与参数训练

目录 引入 一、CNN基本结构 1、卷积层 2、下采样层 3、全连接层 二、CNN参数训练 总结 引入 卷积神经网络(CNN)是一种有监督深度模型框架,尤其适合处理二维数据问题,如行人检测、人脸识别、信号处理等领域,是带…

19c rac添加节点

在正常的节点 [rootdb1 ~]# xhost access control disabled, clients can connect from any host [rootdb1 ~]# su - grid ASM1:/home/griddb1>export DISPLAY:1.0 ASM1:/home/griddb1>$ORACLE_HOME/gridSetup.sh [rootdb2 ~]# /tmp/GridSetupActions2021-09-16_…

基于Nginx1.22+PHP8+MySQL8安装Discuz! X3.5

基于Nginx1.22PHP8MySQL8安装Discuz! X3.5 1. 安装PHP82. 安装MySQL83. 配置Nginx1.224. 安装Discuz! X3.5 1. 安装PHP8 更新系统: yum update安装EPEL存储库: yum install epel-release安装Remi存储库(提供了最新的 PHP 版本)&…

【十三】druid 原理解析

druid 原理解析 先前写了一篇博客关于druid集成相关的,这里来分析一下druid原理,结合这两篇文章希望读者能够把druid理解透彻。 一、druid介绍 Druid连接池是阿里巴巴开源的数据库连接池项目。Druid连接池为监控而生,内置强大的监控功能&…

【前端JS交互篇】ECMA核心语法 ——常量、变量、数据类型、各种弹框

一、javascript简介 1.1 Javascript简史 在WEB日益发展的同时,网页的大小和复杂性不断增加,受制于网速的限制,为完成简单的表单验证而频繁地与服务器交换数据只会加重用户的负担,当时走在技术革新最前沿的Netscape(网…

阿里云服务器的弹性计算能力如何?是否支持按需扩展和缩减?

阿里云服务器的弹性计算能力如何?是否支持按需扩展和缩减?   【本文由阿里云代理商[聚搜云www.4526.cn]撰写】   阿里云服务器,作为业界领先的云计算服务提供商,其弹性计算能力是如何体现的?是否真的支持按需扩展和…

定制你的Blocks UI布局:Gradio的Block Layouts模块介绍

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

【python】如何在 Python 中创建相关矩阵

目录 一、说明 二、相关理论 2.1 何为相关 2.2 相关的前提 2.3 Correlation Matrix是个啥? 2.4 皮尔逊相关系数 三、Python演示如何创建相关矩阵 四、数据可视化观察 五、后记 一、说明 本教程介绍如何在 Python 中创建和解释相关矩阵。然而,创…