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

day1-->day7| 机器学习(吴恩达)学习笔记

一、监督学习(Supervised learning)

给予每一个Input–>对应一个output
在这里插入图片描述

1.1:样例:

在这里插入图片描述

  • 也就是针对每一个输入样例input,我们都给他制定一个function,使得它有确定的Output映射输出。

1.2:两大监督学习经典样例:

1)、回归算法(Regression Algorithm)

利用线性回归来进行预测

在这里插入图片描述

  • 它学习从无限多的可能数中预测数字

2)、分类算法(Classification Algorithm)

根据我们所提供的"映射规则"来进行"优/劣"的分类

在这里插入图片描述

  • 它对一个类别进行预测,所有的输出都是一小组

1.3)、监督学习总结(Supervised learning Summarize)

在这里插入图片描述

二、无监督学习(Unsupervised learning)

  • 对于每一个Input,我们不对它给予任何“标签”,我们仅仅是想要找到一些“有趣”的数据
  • 恰恰相反,对于每个输入给出,我们要求机器自己弄清楚什么是“有趣”的,或者对于这个特定的数据集,找出这个数据中可能含有的什么模式结构
    在这里插入图片描述

2.1:三大无监督学习经典样例:

1):聚类算法(Clustering Algorithm)

获取没有标签的数据并且尝试将他们自动分组到集群当中
  • 例如谷歌新闻,它就是每天查看互联网上的数十万新闻文章,并且把相关文章组合在一起
    在这里插入图片描述
  • 在这个样例中,没有任何人告诉机器去查找包含pandastwinzoo这个词的文章,因为新闻话题每天都在变化,相反,算法必须在没有监督的情况下自行计算出今天的新闻集群是什么
    在这里插入图片描述
  • 这也就是所谓的用户分类,再针对不同的组别,进行不同的服务

2):异常检测(anomaly detection)

---用来检测异常事件---,"在金融量化中",针对异常交易进行发现/解决

3):降维(dimensionality reduction)

可以用来将一个大数据集神奇地压缩成一个小得多地数据集,同时丢失尽可能少的信息

2.2:无监督学习总结:

在无监督学习中,数据仅仅带有输入x,而没有输出标签y,并且算法必须在数据中去寻找一些模式/结构。

三、线性回归模型(linear regression )

  • 这属于监督学习
也就是根据我们的数据集,训练出一条线性方程,来进行数据的预测

在这里插入图片描述

  • PS:(x(i),y(i))表示第i组测试样例

3.1:线性回归模型的训练步骤

1)、统计训练数据集(training set)

2)、学习算法模型

3)、训练函数模型(function)进行预测或估计 ( y − h a t y-hat yhat表示预测值)( y y y表示真实值)

在这里插入图片描述

 输入size(input)--> 函数func-->预测值 price(estimated)

在这里插入图片描述

3.2:如何表示 f f f函数(在线性中)

  • 和一次函数基本一致
    在这里插入图片描述

四、代价函数(cost function)

用来度量训练优/劣的的运行情况

4.1:代价函数公式

  • 1、对于线性回归方程 f ( x ) = w x + b f(x)=wx+b f(x)=wx+b,我们需要做的是选择wb的值,以便得我们从f获得的直线以某种方式很好的拟合数据
    在这里插入图片描述
  • 2、因此,我们将构造一个成本函数来衡量训练函数的优/劣
  • 注意:此处的1/2只是为了后面的计算好算而乘上的一个常数
    在这里插入图片描述

4.2:代价函数理解分析

  • 1、为了简便理解代价函数,我们对model关系f进行简化
  • f ( x ) = w x + b − − − > f ( x ) = w x f(x)=wx+b--->f(x)=wx f(x)=wx+b>f(x)=wx
    在这里插入图片描述
  • 此时,我们可以构造出代价函数 J ( w ) J(w) J(w)的函数图像
    在这里插入图片描述
    此时,我们可以发现当 w = 1 w=1 w=1时, J ( w ) = m i n i m i z e = 0 J(w)=minimize=0 J(w)=minimize=0,我们可以成功找到最恰当的训练模型😄

4.3:可视化代价函数

首先,让我们回顾一下目前位置所用到的公式

在这里插入图片描述

  • 4.2 4.2 4.2中,我们令 b = 0 b=0 b=0来观察代价函数,在 4.3 4.3 4.3中,我们来分析完全的model函数
    f ( x ) = w x + b f(x)=wx+b f(x)=wx+b
  • 函数图像为:(因为有两个input所以变成了三维)
    在这里插入图片描述
  • 把这个三维图像进行切片,可以得到它的二维简化表示,此时,我们可以非常清晰的看到训练模型的情况
    在这里插入图片描述

4.4:可视化举例:

我们来看几组样例来观察这两个图像的关系,可以清晰看到何时训练效果最佳

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看到下图训练效果最佳
在这里插入图片描述

五、梯度下降

在"四"中,我们找到了最佳的训练模型,如果我们有一种更系统的方式来找到"w'和"b"的值,
这会导致更小的成本,事实证明,”梯度下降“可以做到这一点

5.1:梯度下降的概念

在"四"中,我们利用图像来进行推测,现在,让我们来重新审视这个问题

1):其实,我们所需要做的只是 w w w b b b初始值的预测(因为在线性回归中,初始值并不重要,我们我们可以把他们都设置为 0 0 0进行操作)

2):使用梯度下降算法,我们要做的是,我们每次都稍微改变参数 w w w b b b的值,以尝试降低成本 j j j,直到希望 j j j稳定或者接近最小值

在这里插入图片描述

5.2:梯度下降的可视化

让我们来观察一下,梯度下降的过程中都做了什么操作

在这里插入图片描述

1):此时,你处于一个极大值,你想要尽快的到达一个极小值点

2):首先,你将旋转360度,然后问自己,我想要尽快下山,我该往某个方向走一小步?

在这里插入图片描述

3):不断重复这个操作,我们可以迅速到达一个局部最小值这个过程,就是梯度下降

在这里插入图片描述

5.3:梯度下降的实现

梯度下降的实现其实就是利用不断增大/减少"w","b"的值,使得"w","b"的值最符合条件

1):让我们来看看公式

在这里插入图片描述

  • 注意:此时 w , b w,b w,b要同时变化,否则会导致 b b b计算时, w w w已经发生了变化,这会使得公式不一致
    在这里插入图片描述
  • 让我们重新回到公式,看看每个变量都是什么意思,我们先把 w w w拎出来观察它的图像
    在这里插入图片描述

2):观察 J ( w ) J(w) J(w)的图像,我们可以发现偏导的奇妙之处,可以发现无论此时, w w w是在min的右边/左边,我们减去 ( − ) (-) ()偏导值都会使得 w w w往正确的方向移动!!!

在这里插入图片描述

3):不仅如此,当 J ( w ) − > m i n J(w)->min J(w)>min时,函数变得平缓,此时,导数的绝对值也变得小!!

在这里插入图片描述

5.4:学习率

学习率过大/过小都会影响训练的效率

在这里插入图片描述

1):如果学习率非常小

在这里插入图片描述

  • 此时,训练的效率变得非常低,使得梯度下降的过程变得非常漫长

2):如果学习率非常大

在这里插入图片描述

  • 此时,可能会导致无法达到最小值min,甚至有可能变得发散

3):局部最小值

当函数不是凸函数局部最小值!=最小值

在这里插入图片描述

  • w − > m i n w->min w>min时,会发现此时 w w w不再变化,即找到了局部最小值(极小值)

六、用于线性回归的梯度下降

我们已经学习了"平方误差函数""梯度下降""线性回归",现在让我们把他们串起来拟合一个模型

6.1:用于线性回归的梯度下降的公式推导

  • 联立公式我们可以得到如下公式
    在这里插入图片描述

1):让我们来推导一下公式(此处会解释为什么会有 1 / 2 1/2 1/2

在这里插入图片描述

2):此时, w w w b b b仍然需要同时更新

在这里插入图片描述

七、运行梯度下降

让我们来观察一下当我们为线性回归运行梯度下降时,会发生什么

在这里插入图片描述
可以发现同样也可以达到 J ( w ) J(w) J(w)的最小值min

7.1:批量梯度下降(Batch gradient descent)

  • 指的是再梯度下降的每一步中,我们都在查看所有的训练示例,而不仅仅是训练数据的一个子集。
    在这里插入图片描述

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

相关文章:

  • FLTK - FLTK1.4.1 - 搭建模板,将FLTK自带的实现搬过来做实验
  • 知识管理平台在数字经济时代推动企业智慧决策与知识赋能的路径分析
  • 全面认识了解DeepSeek+利用ollama在本地部署、使用和体验deepseek-r1大模型
  • 【仓颉】仓颉编程语言Windows安装指南 配置环境变量 最简单解决中文乱码问题和其他解决方案大全
  • 360嵌入式开发面试题及参考答案
  • 【Linux指令/信号总结】粘滞位 重定向 系统调用 信号产生 信号处理
  • 【开源免费】基于Vue和SpringBoot的医院资源管理系统(附论文)
  • Python的那些事第六篇:从定义到应用,Python函数的奥秘
  • 将多目标贝叶斯优化与强化学习相结合用于TinyML
  • 2024年数据记录
  • 【16届蓝桥杯寒假刷题营】第1期DAY2
  • 创建 priority_queue - 进阶(内置类型)c++
  • React 低代码项目:项目创建
  • .Net / C# 分析文件编码 并将 各种编码格式 转为 另一个编码格式 ( 比如: GB2312→UTF-8, UTF-8→GB2312)
  • Vue中的动态组件是什么?如何动态切换组件?
  • C 标准库 - `<errno.h>`
  • 学习笔记 ---- 平衡树 总结
  • UE求职Demo开发日志#15 思路与任务梳理、找需要的资源
  • sys中目录和文件的建立以及与驱动的交互
  • 【Block总结】LSKNet,大核卷积|即插即用