part1.基本介绍

1.机器学习的三个任务

一般情况下,我们在机器学习中有三个基本任务,分别是Regression Classification和Structured

Regression是计算数值解

而Classification则是求离散解(分类),也就是做选择题

Structured则是找一个结构,这种结构除了数据结构,还包括文字、绘画等广义的结构或者说某种意义上,让机器学习了之后创造一种东西出来

2.找函数三步骤

2.1写出一个带有为止参数的函数

也就是面对一些我们位置的问题,仙写出一个带有未知参数的函数,也就是先猜测一下我们要如何求这个问题的解,比如一下这个简单的线性函数:

这个猜测来自于作者对问题本质的了解,我们管这种带未知参数的函数为模型,也就是数学模型

2.2 定义Loss

第二部要定义一个Loss

这个所谓的Loss其实就是一个Function,输入的值就是我们定义的未知参数,在上述就是我们给定的b和w(参数,变量是x),这个Loss输出的值代表 现在如果我们把这一组未知的参数设定为某个值的时候,这个数值好还是差。

就像我们在计算一组数据的线性回归方程的时候,是不是会有一部分和实际上的值偏差?某种意义上来说,这个Loss函数就是在对这个偏差值的情况做出评价

这里我们可以把每个离散值的误差加起来然后求个平均(原文中引用的视频播放量作为参考,但我觉得这个比较好理解,就随便放张图了)

这种就是绝对差值叫MAE Mean Absolute error 还有就是把这个插值的平方算出来的,就叫Mean Square error,或者MSE,作业利用的MAR比较多

计算出来得到一个Error surface

2.3 优化

当然了,第三步就是优化问题,最佳化问题的结果,其实也就是我们要去找最好的w和b,让loss最小化

在这们课程里我们会用到的优化方式就只有梯度下降,现在我们简化一下,假设我们的未知参数只有一个,就是w

那当我们有不同的w,就会有不同的 loss,这时候我们的error surface就是一条曲线,如下图:

那我们要怎么去找这么一个w呢?

看着复杂,其实也就是跟着这条曲线的斜率变化去做调整:斜率为负,则向右找;斜率为正,就向左找

那每次走多少呢?这就涉及到一个调参了:

注:loss是自己定义的,所以可以是负的

当然这里老师也注意到了局部最优解的问题,其实我也想到了,就是如果只根据这个逼近“极小值”的方法,其实是找不到最小值的,这个确实是梯度下降方法的一个问题。下面是老师的一段那话:

现在我们回到之前的有两个参数的模型,也就是有w和b的那个,这时候我们如何梯度下降呢?

这个η就是我们定义的步长,或者说叫learning rate

其实由上可以看出,整个loss的收敛方向其实是朝着 多个维度进行的,并不是单指一个方向,当多个维度下的数据都有不同的方向时,其效应就像带有引力的洞一样,会将我们的点向最深不见底的洞吸引过去。

什么时候停下来?两种情况

1.一开始就设定好最多迭代多少次,设定好迭代次数

2.最好的情况就是直接找到了极小值 w' = 0,当然这个...

线性模型

以上三个步骤:定义模型,写出loss,优化参数这三个步骤合起来就被我们称作训练,当然了,这个训练是在我们知道答案的基础上进行的,但是这并不是我们想要的,某种意义上来说这只是对过去规律的总结,真正对于我们重要的是未来的发展,预知未来。

那我们来拿着数据来预测一下试试看

然后我们发现,真实的数据和我们预测的数据 还是有很大的差距的,实际的数据有一定的周期,周末看的人多,工作日看的人少,然后七天一个循环

那我们假设给定它一个这样的参数列表:

我们之前只考虑了一天,那我们最低的loss是0.58k的误差,其实这里计算出来的误差是0.33k,这两个数据至今的差距,就不言而喻了。

那我们考虑一个月,甚至考虑一年,又怎么样呢?我们管这种模型称作线性模型,之后会浅谈怎么把线性模型做得更好。

part2.基本介绍p2

当然了线性的模型当然是比较简单的,但是现实肯定不可能处处都有线性的模型

李宏毅机器学习笔记:从0到写AI的更多相关文章

  1. 【机器学习】李宏毅机器学习-Keras-Demo-神经网络手写数字识别与调参

    参考: 原视频:李宏毅机器学习-Keras-Demo 调参博文1:深度学习入门实践_十行搭建手写数字识别神经网络 调参博文2:手写数字识别---demo(有小错误) 代码链接: 编程环境: 操作系统: ...

  2. 李宏毅机器学习笔记5:CNN卷积神经网络

    李宏毅老师的机器学习课程和吴恩达老师的机器学习课程都是都是ML和DL非常好的入门资料,在YouTube.网易云课堂.B站都能观看到相应的课程视频,接下来这一系列的博客我都将记录老师上课的笔记以及自己对 ...

  3. 李宏毅机器学习笔记3:Classification、Logistic Regression

    李宏毅老师的机器学习课程和吴恩达老师的机器学习课程都是都是ML和DL非常好的入门资料,在YouTube.网易云课堂.B站都能观看到相应的课程视频,接下来这一系列的博客我都将记录老师上课的笔记以及自己对 ...

  4. 李宏毅机器学习笔记6:Why deep、Semi-supervised

    李宏毅老师的机器学习课程和吴恩达老师的机器学习课程都是都是ML和DL非常好的入门资料,在YouTube.网易云课堂.B站都能观看到相应的课程视频,接下来这一系列的博客我都将记录老师上课的笔记以及自己对 ...

  5. 李宏毅机器学习笔记4:Brief Introduction of Deep Learning、Backpropagation(后向传播算法)

    李宏毅老师的机器学习课程和吴恩达老师的机器学习课程都是都是ML和DL非常好的入门资料,在YouTube.网易云课堂.B站都能观看到相应的课程视频,接下来这一系列的博客我都将记录老师上课的笔记以及自己对 ...

  6. 李宏毅机器学习笔记2:Gradient Descent(附带详细的原理推导过程)

    李宏毅老师的机器学习课程和吴恩达老师的机器学习课程都是都是ML和DL非常好的入门资料,在YouTube.网易云课堂.B站都能观看到相应的课程视频,接下来这一系列的博客我都将记录老师上课的笔记以及自己对 ...

  7. 李宏毅机器学习笔记1:Regression、Error

    李宏毅老师的机器学习课程和吴恩达老师的机器学习课程都是都是ML和DL非常好的入门资料,在YouTube.网易云课堂.B站都能观看到相应的课程视频,接下来这一系列的博客我都将记录老师上课的笔记以及自己对 ...

  8. 【ML入门】李宏毅机器学习笔记01-Learning Map

    版权声明:小博主水平有限,希望大家多多指导.本文仅代表作者本人观点,转载请联系知乎原作者——BG大龍. 目录 1 什么是机器学习? 2 机器学习的3个步骤 3 李宏毅老师的机器学习课程 4 按“模型的 ...

  9. 李宏毅机器学习笔记——新手感悟——PM2.5作业

    python也不会,计算机也不会,啥都不会,只带了个脑子考了计算机研究生.研究生选了人工智能方向.看来注定是漫长的学习之旅. PM2.5作业,我是一个字都看不懂.所以我采用了直接看答案的方案.把答案看 ...

  10. VCS使用学习笔记(0)——写在前面的话

    由于毕业设计做的是数字IC相关,虽然不是纯设计,但是也有设计相关.有设计就要有仿真验证,我就趁此机会来学习一下VCS的使用吧.当然,这里只是学习其简单的逻辑仿真功能,从波形仿真到覆盖率等,基本上不涉其 ...

随机推荐

  1. 6. EFK:免费的日志采集与可视化搜索套件

    收集日志是为了做进一步的分析.收集是第一步,收集到日志后还需要进行存储.索引,以便进行快速查询分析.我们还需要一个友好的查询界面,来方便用户使用日志. 本文介绍一个免费的开源软件组合,正好可以实现上述 ...

  2. 分布式存储系统之Ceph集群访问接口启用

    前文我们使用ceph-deploy工具简单拉起了ceph底层存储集群RADOS,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16724473.html:今天我 ...

  3. CentOS 7.9 安装 rocketmq-4.9.2

    一.CentOS 7.9 安装 rocketmq-4.9.2 地址: https://rocketmq.apache.org https://github.com/apache/rocketmq ht ...

  4. 斗鱼 H5 直播原理解析,它是如何省了 80% 的 CDN 流量?

    斗鱼直播相信大家都听说过,打开斗鱼官网就可以直接在浏览器中观看直播.那么斗鱼是如何实现浏览器视频直播的呢?本篇文章就来解析斗鱼是如何实现直播的,以及它是如何节省 80% 的 CDN 流量,要知道视频直 ...

  5. 微软出品自动化神器【Playwright+Java】系列(五) 之 常见点击事件操作

    写在前面 明天就是周五了,这周有那么一两天心情特别不好,真的是做什么都没兴致,所以导致整个人都很丧,什么都不想做. 本打算周一就更新这篇文章的,但由于公司一直加班,每天到家很晚,都是挤时间去学,理解后 ...

  6. JDK 8之前日期和时间的API

    JDK 8之前日期和时间的API(1) System类中的currentTimeMillis():返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差.称为时间戳. java.util ...

  7. 5.MongoDB系列之索引(二)

    1. $运算符如何使用索引 1.1 低效的运算符 $ne.$not查询可以使用索引,但不是很有效,尽量避免 1.2 范围查询 范围查询其实是多值查询,根据复核索引规则,尽可能先等值精确匹配,然后范围查 ...

  8. golang中的一些实用功能

    0.1.索引 https://waterflow.link/articles/1663921524839 通过使用一些通用代码来节省时间,而无需单独实现它们.以下是一些开发中经常会用到的函数实现的列表 ...

  9. 如何清除取消KMS激活

    1.首先要卸载掉用KMS激活的程序. 2.卸载完成之后,以管理员身份打开命令提示符. 3.依次输入以下命令 slmgr /upk slmgr /ckms slmgr /rearm 输入完成后会显示需要 ...

  10. 10.异步mysql

    python中操作mysql连接.操作.断开都是网络IO #安装支持异步aiomysql的模块 pip3 install aiomysql async def execute(): # 网络IO操作, ...