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

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

最新文章

  1. [New Portal]Windows Azure Cloud Service (34) TechEd 2013 North America关于Azure的最新消息
  2. phpize 扩展GD库 安装 ! 环境--centos 7 +nginx 1.7.11+php 5.6.7
  3. 将JSON转成DataSet(DataTable)
  4. (转载)解决ListView中使用EditText所遇到的一些冲突
  5. 20145317彭垚 《Java程序设计》第一次实验实验报告
  6. Weka 3: Data Mining Software in Java
  7. Xcode和github入门详细教程
  8. while loading persisted sessions 异常解决方法
  9. linux开机自动挂载NTFS-WINDOWS分区
  10. Linux 网络编程: daytime Service
  11. Codeforces 489C Given Length and Sum of Digits...
  12. spring boot application properties配置详解
  13. [POJ] 1562 Oil Deposits (DFS)
  14. golang的cms
  15. [蓝桥杯]2013蓝桥省赛B组题目及详解
  16. 劳德巴赫下载kernel和文件系统时问题
  17. asp.net core 同时添加Identity和Bearer认证
  18. 3、css初识
  19. [蓝桥杯]ALGO-185.算法训练_Trash Removal
  20. Linux基础命令---chmod

热门文章

  1. Fluentd部署:错误排查
  2. Alertmanager篇
  3. linux开机自启服务
  4. PAT (Basic Level) Practice 1022 D进制的A+B 分数 20
  5. 学习ASP.NET Core Blazor编程系列五——列表页面
  6. Codeforces Round #708 (Div. 2)
  7. 洛谷P7960 [NOIP2021] 报数 (筛法)
  8. 洛谷P1714 切蛋糕(单调队列)
  9. Sun 的 BASE64Encoder替代
  10. MySQL之安装(linux两种版本版本安装)