| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 《机器学习》学习笔记1:代价函数 线性回归 梯度下降 -> 正文阅读 |
|
[人工智能]《机器学习》学习笔记1:代价函数 线性回归 梯度下降 |
Week1 入门 代价函数 线性回归 梯度下降基于吴恩达《机器学习》课程 1 引言监督学习:回归问题(连续输出)、分类问题(离散结果) 无监督学习:聚类算法、鸡尾酒宴问题 2 单变量线性回归回归:根据之前的数据预测出一个准确的输出值 2.1 变量表示
( x ( i ) , y ( i ) ) (x^{(i)},y^{(i)}) (x(i),y(i))代表第 i i i个观察实例
θ 0 θ 1 … \theta_{0} \theta_{1}… θ0?θ1?…为参数(parameters) 建立的模型(假设函数)只含有一个特征/输入变量,这样的问题叫作单变量线性回归问题: h θ ( x ) = θ 0 + θ 1 x h_\theta \left( x \right)=\theta_{0} + \theta_{1}x hθ?(x)=θ0?+θ1?x 2.2 代价函数模型所预测的值与训练集中实际值之间的差距 h θ ( x ( i ) ) ? y ( i ) h_{\theta}(x^{(i)})-y^{(i)} hθ?(x(i))?y(i)就是建模误差 (modeling error )。 我们的目标便是选出可使得建模误差的平方和 最小的参数 (parameters ) θ 0 \theta_{0} θ0? 和 θ 1 \theta_{1} θ1?,即使得代价函数 (平房误差函数)最小: J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) ? y ( i ) ) 2 J \left( \theta_0, \theta_1 \right) = \frac{1}{2m}\sum\limits_{i=1}^m \left( h_{\theta}(x^{(i)})-y^{(i)} \right)^{2} J(θ0?,θ1?)=2m1?i=1∑m?(hθ?(x(i))?y(i))2 1 2 \frac{1}{2} 21?是为了后续求导方便, 1 m \frac{1}{m} m1?仅是使结果较小。 2.3 梯度下降用于求代价函数 J ( θ 0 , θ 1 ) J(\theta_{0}, \theta_{1}) J(θ0?,θ1?) 的最小值,得到最小值对应的参数 θ 0 \theta_{0} θ0? 和 θ 1 \theta_{1} θ1?。 开始时随机选择一个参数组合,持续寻找下一个能让代价函数值下降最多的参数组合,直到找到一个局部最小值(local minimum ),选择不同的初始参数组合,可能会找到不同的局部最小值。 批量梯度下降(batch gradient descent )算法的公式为: α \alpha α是学习率(learning rate )或步长 梯度下降中,当
j
=
0
j=0
j=0 和
j
=
1
j=1
j=1时,会产生更新。每次要同时更新
θ
0
{\theta_{0}}
θ0?和
θ
1
{\theta_{1}}
θ1? ,而不能先更新
θ
0
{\theta_{0}}
θ0?用更新后的值更新
θ
1
{\theta_{1}}
θ1? 。 当接近局部最低时,导数值会自动变得越来越小,所以梯度下降将自动采取较小的幅度,所以实际上没有必要再另外减小 α \alpha α。 2.4 梯度下降的线性回归线性回归模型: h θ ( x ) = θ 0 + θ 1 x h_\theta \left( x \right)=\theta_{0} + \theta_{1}x hθ?(x)=θ0?+θ1?x J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) ? y ( i ) ) 2 J \left( \theta_0, \theta_1 \right) = \frac{1}{2m}\sum\limits_{i=1}^m \left( h_{\theta}(x^{(i)})-y^{(i)} \right)^{2} J(θ0?,θ1?)=2m1?i=1∑m?(hθ?(x(i))?y(i))2 梯度下降算法: ? ? θ j J ( θ 0 , θ 1 ) = ? ? θ j 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) ? y ( i ) ) 2 \frac{\partial }{\partial {{\theta }_{j}}}J({{\theta }_{0}},{{\theta }_{1}})=\frac{\partial }{\partial {{\theta }_{j}}}\frac{1}{2m}{{\sum\limits_{i=1}^{m}{\left( {{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)}}^{2}} ?θj???J(θ0?,θ1?)=?θj???2m1?i=1∑m?(hθ?(x(i))?y(i))2 将 h θ ( x ) = θ 0 + θ 1 x h_\theta \left( x \right)=\theta_{0} + \theta_{1}x hθ?(x)=θ0?+θ1?x代入后求偏导(此时 1 2 \frac{1}{2} 21?就起作用了): j = 0 j=0 j=0 时: ? ? θ 0 J ( θ 0 , θ 1 ) = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) ? y ( i ) ) \frac{\partial }{\partial {{\theta }_{0}}}J({{\theta }_{0}},{{\theta }_{1}})=\frac{1}{m}{{\sum\limits_{i=1}^{m}{\left( {{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)}}} ?θ0???J(θ0?,θ1?)=m1?i=1∑m?(hθ?(x(i))?y(i)) j = 1 j=1 j=1 时: ? ? θ 1 J ( θ 0 , θ 1 ) = 1 m ∑ i = 1 m ( ( h θ ( x ( i ) ) ? y ( i ) ) ? x ( i ) ) \frac{\partial }{\partial {{\theta }_{1}}}J({{\theta }_{0}},{{\theta }_{1}})=\frac{1}{m}\sum\limits_{i=1}^{m}{\left( \left( {{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)\cdot {{x}^{(i)}} \right)} ?θ1???J(θ0?,θ1?)=m1?i=1∑m?((hθ?(x(i))?y(i))?x(i)) 则梯度下降算法可改写成: Repeat { ???? θ 0 : = θ 0 ? a 1 m ∑ i = 1 m ( h θ ( x ( i ) ) ? y ( i ) ) {\theta_{0}}:={\theta_{0}}-a\frac{1}{m}\sum\limits_{i=1}^{m}{ \left({{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)} θ0?:=θ0??am1?i=1∑m?(hθ?(x(i))?y(i)) ???? θ 1 : = θ 1 ? a 1 m ∑ i = 1 m ( ( h θ ( x ( i ) ) ? y ( i ) ) ? x ( i ) ) {\theta_{1}}:={\theta_{1}}-a\frac{1}{m}\sum\limits_{i=1}^{m}{\left( \left({{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)\cdot {{x}^{(i)}} \right)} θ1?:=θ1??am1?i=1∑m?((hθ?(x(i))?y(i))?x(i)) } 此为批量梯度下降:每一步中,我们都用到了所有的训练样本。 线性回归的代价函数一般都是凸函数(弓状凸向原点),只有一个全局最优解。 用正规方程(normal equations )也可以求代价函数最小值(第二周讲)。实际上在数据量较大的情况下,梯度下降法比正规方程要更合适。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 12:35:04- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |