首页 > 其他分享 >机器学习是怎么回事?

机器学习是怎么回事?

时间:2024-08-08 22:18:02浏览次数:13  
标签:截距 机器 怎么回事 学习 五个 我们 上面

什么是机器学习

最近在入门人工智能,发现了一大堆的名词,和大家分享一下我是怎么理解机器学习的。

机器学习的概念

在百度上有定义,这里我说一下我自己的定义哈。机器学习就是让机器可以猜到你心里想的那个数字

我们想一下,什么是学习? 不就是从一开始的瞎猜到合理的推测吗?

我们玩一个猜数字的游戏,这个游戏规定,数字大小在0~100之间,但是我个人的习惯就是,这个数在50附近,比如48,49,50,51,52,一直都是这五个值中的一个。

假设我和你玩了一百次,每次你猜完,我告诉你猜对了都是这五个数字中的一个,如果继续玩,你是不是就会在这五个数字中去问我对不对? 所以,你现在就学会了怎么较为准确的猜出我心里想的数字。

以上过程我们就可以说是学习,即从过去的经验中得到下一次类似事件可能发生的结果。

机器怎么学习?

其实,在我看来,机器学习就是统计学和计算机的组合,可能这个说法比机器学习这个名词更接近真相。

现在我们来做一个线性拟合(这个机器学习的一个经典应用),假设现在有五个点,这五个点

  1. p1:(1,5)
  2. p2:(2,6)
  3. p3:(3,7)
  4. p4:(4.8)
  5. p5:(5,9)

上面这五个点,我们要是画一条线,就可以直接看出来,是y=x+4的直线上的五个点,对吧。

在高中,我们学过最小二乘法去计算斜率和截距的值,但现在我们不用这种公式来解这个系数,而是用猜的方式来学习怎么得到比较准确的系数。

我们按照以下过程看看能不能得到这样的系数:

  1. 我们先假设斜率是3,截距是20
  2. 我们导入y=3x+20,带入x为1到5,发现所有的y值都大于给出的点
  3. 根据2得出的结论,我认为截距值大了,我就-5,然后 y=3x+15
  4. 将新的公式带入x,看y值,发现还是所有的值都大于给出的点
  5. 继续做上面的调整,直到我们发现有这条线从这些点中间穿过,即部分点在线上面,部分在下面
  6. 微调斜率,让所有点都在得出的线上面或者下面
  7. 微调截距,让新的线穿过这些点
  8. 重复上面这个过程,直到我们计算的这些点和线的均方差达到一个阈值即可,比如说小于了10,我们就认为可以了

当然,我这里的推到并不是很严谨。但大体上说明白了怎么去猜测出一个合适的系数,让一条直线穿过这些点的时候,总误差比较小。

而且,我们可以看出,如果给出的点越多,这个猜测结果可信度越高。

如果能把上面的逻辑通过代码变成算法,我们就获得了一个机器学习的算法。

当然还可以优化,比如我们开始的时候不是随意的给出一个随机的斜率和随机的截距,而是让这条直线直接穿过其中的一个点,可以加快迭代次数等。

看了上面的例子是不是忽然觉得,这不就很像一个人在没有专业的数学功底的情况下去解决一个数学问题的推理方式吗?虽然不会用某个公式来直接解决,但是可以凭借直觉去调整参数。让机器像人一样思考!!!

只是线性函数,如何满足复杂情况?

在很多时候,要得到的曲线不是线性的,复杂问题往往需要一个曲线,或者说一段一段的分段函数。

这一个部分,我推荐大家去B站看一下这个视频,这个大哥我觉得将得很清楚,主要是我觉得我讲不了这么清楚。

点击这里

通过上面这个视频,你就会发现,只需要把线性函数和一个激活函数组合,然后再进行叠加,就可以得到一个你想要的任何形状的曲线。这个曲线通过参数不停优化,你甚至可以用一条曲线画一只猫猫,不是吗?

image

好了,祝大家学有所成,天天开心!

标签:截距,机器,怎么回事,学习,五个,我们,上面
From: https://www.cnblogs.com/joke-dream/p/18349823

相关文章

  • 最大流学习笔记(待补充)
    刚学了最大流的EK算法和Dinic算法,在此做一点总结。由于这次专题学习是偏向图论建模的,因此目前暂且不涉及算法本身。Dinic板子:namespaceNet{ intS,T; inthead[510],work[510],etot=1; structnode{intnxt,v,cap;}edge[160010]; inlinevoidadd(intx,inty,in......
  • C语言学习
    学习内容一维数组,二维数组创建,初始化,数组名代码笔记#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>//一维数组//数组的创建//数组:相同元素类型的集合//数组的创建方式//typt_t  arr_name [const_n];//元素类型       常量表达式,用来指......
  • maven学习第一天
    核心功能依赖管理1.提取版本号统一管理在property标签内添加技术名.version如下图然后在依赖标签内写入如下格式即可2.引入依赖作用域在scop标签内定义依赖范围,默认的作用范围为compile3.依赖传递和冲突概念如下:依赖传递和依赖冲突常见的问题依赖传递常见的下载......
  • freertos学习笔记(十)事件标志组
    事件标志组相当于用户平时定义的Flag,事件标志,不过freertos支持将该标志组作为启动task的条件概述分为8位和24位的模式(通过设置宏来配置)每一位有0和1两个状态用法用于平常程序的标记位用于task之间的同步任务a先到达同步点,进入阻塞态设置任务a的事件标记位检查其......
  • 学习日常:造数据 - 上
    前言上次自己造数据,感悟颇丰,今天就来写一下这个话题。陈老师将这个任务交给我们时,给了我们一个板子,姑且叫它build_data.cpp:/*测试数据生成说明:1.本文件放入标程同文件夹2.在标程内贴入右边语句(不要修改):freopen("data.in","r",stdin);freopen("data.out","w",stdout);3.......
  • Redis学习笔记_1_基本安装与使用
    Redis入门篇1初识RedisRedis是一种键值型的NoSql数据库键值型:指Redis中存储的数据都是以key、value对的形式存储,而value的形式多种多样,可以是字符串、数值、甚至jsonNoSql:相对于传统关系型数据库而言,有较大差异1.1认识NoSQLNoSql可以翻译做NotOnlySql(不仅仅是SQL......
  • 基于YOLOv10深度学习的交通信号灯检测识别系统【python源码+Pyqt5界面+数据集+训练代
    《博主简介》小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~......
  • bitset 学习笔记
    bitset有点厉害,必须要学了。介绍bitset可以看成是一个每个位置都是\(0\)或\(1\)的bool数组。与bool数组相比,它的空间复杂度是其\(\frac{1}{32}\),时间复杂度也是\(\frac{1}{32}\),还支持位运算,所以不论是用处还是效率基本薄纱了bool数组。可以作为卡常、压位操作、......
  • 小白学习微信小程序的跨页面通信和数据传递
    跨页面通信和数据传递在微信小程序开发中非常重要,它们可以帮助不同页面之间共享数据并实现页面间的交互。本文将详细介绍微信小程序中的跨页面通信和数据传递的相关知识,并提供代码案例进行说明。小程序中跨页面通信的方式主要包括:使用全局变量使用事件总线使用页面栈数据传......
  • 大语言模型学习笔记
    基础知识简介一、大语言模型(LLM)的概念LLM定义与特点:处理海量文本,多者可具备数百亿参数,理解语言深度,展现涌现能力。LLM国内外代表:i.国外有GPT系列、LLaMA等ii.国内有文心一言、通义千问等。模型大小与性能能关系:与小模型构架相似,但参数量级提升带来解决复杂任务的显著优......