热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

大白话5分钟带你走进人工智能第五节解析解方式求解模型参数

第五节解析解方式求解模型参数第四节中我们讲解了最大似然和最小二乘之间的关系,通过数学原理找到了损失函数为MSE的理论支撑。本节的话我们讲解怎么样基于目标函数为MSE的

                                                                       第五节解析解方式求解模型参数

    第四节中我们讲解了最大似然和最小二乘之间的关系,通过数学原理找到了损失函数为MSE的理论支撑。本节的话我们讲解怎么样基于目标函数为MSE的情况下,找到最合适的参数模型。在此之前,我们总结下通过最大似然估计建立目标函数思路:

1. 建立线性模型(将误差视为未统计到的多个维度影响的结果)

2. 对于误差假设其服从均值为0的高斯分布

3. 得到每个数据点被采样到的概率分布函数(自变量为θ)

4. 最大似然估计--总概率最大

5. 通过两边取ln和公式整理,得到结论:mse最小时总似然最大。

我们挨个分析下上面逻辑,第一条什么是线性模型?所谓的多元线性回归里面的线性模型就是y=W^{T}X,是一个线性相加的结果,并且误差视为未统计到的多个维度影响的结果且其服从均值为0的高斯分布。第三条中,对于每一个样本,都会得到一个概率分布函数。第四条中,将所有的样本的概率分布函数累乘,得到一个似然函数,我们的目标就是使其总样本发生的概率最大。最后通过对最大似然函数做数学变换,两边取ln和公式整理,得到结论为:mse最小时总似然最大。所以我们得到新的目标:所谓学习就是 求出一组使mse最小的θ参数。通常,我们把求一个使某函数达到最大(小)值的自变量解的过程叫做函数最优化,机器学习实质上都是将参数学习问题转变为函数最优化问题,进而求解,所以对于线性回归问题,我们要做的就是对 J(\theta )=\frac{1}{2}\sum_{i=1}^{m}(h_{\theta}x^{i}-y^{i})^{2}其优化。

    那么如何求函数最小值呢?(函数最优化问题)我们结合高中的知识知道,直接的思路是求导,然后使得导数为零的点,就是我们的最优解。那么这个思想可以应用到求解我们的模型参数吗?实际上是可以的,因为都是函数的最优化问题。我们铺垫几个向量求导的预备公式:

                            \frac{\partial X\theta }{\partial \theta }=X^{T};        \frac{\partial\theta ^{T}X}{\partial \theta^{T} }=X^{T} ;          \frac{\partial \theta^{T}X }{\partial \theta }=X;        \frac{\partial \theta ^{T}X\theta }{\partial \theta }=2X\theta

上面我们不用管怎么来的,就是一些数学公式而已,有兴趣的自己研究下就可以。先将损失函数写成矩阵形式:

                                                \frac{1}{2}(X\theta -y)^{T}(X\theta - y)=\frac{1}{2}\sum_{i=1}^{m}(h_{\theta}x^{i}-y^{i})^{2}=J(\theta )

解释:因为X\theta -y是列向量(X\theta是预测的y,减去对应的真实的y,所以是一个列向量),转置之后(X\theta -y)^{T}是行向量。所以(X\theta -y)^{T}(X\theta - y)根据向量相乘的规则,对应位置相乘相加,因为对应位置都是同一个元素,所以就是右边的(h_{\theta}x^{i}-y^{i})^{2}相加,也就是最终的上面的写成矩阵形式的公式。其中X矩阵是把每个x看做一个行向量张成的矩阵,y是把所有训练集上的y写作一个列向量。

因为我们的目标是想得到一组最小的\theta,所以也就是相当于\frac{1}{2}(X\theta -y)^{T}(X\theta - y)\theta求导,并令其导数为0,然后解出来,就是我们的最小的\theta解。既然要求导,那么我们对目标函数求梯度,我们说对于向量求梯度,实际上就是对于向量中的每个参数求导,这是一 一对应的。我们对目标函数求梯度的过程如下:

                                                   \bigtriangledown _{\theta }J(\theta )=\bigtriangledown_{\theta }\frac{1}{2}(X\theta -y)^{T}(X\theta - y)

                                                                 =\frac{1}{2}\bigtriangledown_\theta (\theta ^{T}X^{T}X\theta -\theta ^{T}X^{T}\hat y-\hat y^{T}X\theta +\hat y^{T}\hat y)

                                                                 =\frac{1}{2}(X^{T}X\theta+X^{T}X\theta-2X^{T}\hat y)

                                                                 =X^{T}X\theta-X^{T}\hat y

其实上面就是我们根据上面铺垫的向量求导公式结合乘法展开式可得。当梯度为0时,函数应有极小值。此时X^{T}X\theta=X^{T}\hat y 。解得\theta=(X^{T}X)^{-1}X^{T}y。称该形式为线性回归目标函数的解析解。因为解析解不是那么重要,所以不再详细一步步展开上面转换过程。所以我们可以补充总结下线性回归学习的整体流程:

1. 一开始我们拿到了训练集,包含若n个数据点,每个点有m个维度(特征)
2. 我们设定线性判别模型 y=X^T\theta
3. 想要求得最好的一组θ(学习目标)
4. 建立MSE目标函数
5. 对MSE目标函数求使其极小的θ。第一个工具:解析解。

然而解析解有如下缺陷:
1. 解析解函数中存在矩阵求逆的步骤,不是所有矩阵的逆矩阵都可求,有时候只能求近似解
2. 当数据维度非常高时(几百维度以上) 解析解的求解速度会非常慢(O(n^3))

因此:通常利用梯度下降法求解函数最小问题的数值解。

所以下一节中,我们讲解通过梯度下降法求解函数最小问题的数值解,这个是最常用也是机器学习以后经常见到的,会对其原理和过程做详细介绍。

转:https://www.cnblogs.com/LHWorldBlog/p/10597079.html



推荐阅读
  • 资源推荐 | TensorFlow官方中文教程助力英语非母语者学习
    来源:机器之心。本文详细介绍了TensorFlow官方提供的中文版教程和指南,帮助开发者更好地理解和应用这一强大的开源机器学习平台。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文探讨了如何像程序员一样思考,强调了将复杂问题分解为更小模块的重要性,并讨论了如何通过妥善管理和复用已有代码来提高编程效率。 ... [详细]
  • python的交互模式怎么输出名文汉字[python常见问题]
    在命令行模式下敲命令python,就看到类似如下的一堆文本输出,然后就进入到Python交互模式,它的提示符是>>>,此时我们可以使用print() ... [详细]
  • 火星商店问题:线段树分治与持久化Trie树的应用
    本题涉及编号为1至n的火星商店,每个商店有一个永久商品价值v。操作包括每天在指定商店增加一个新商品,以及查询某段时间内某些商店中所有商品(含永久商品)与给定密码值的最大异或结果。通过线段树分治和持久化Trie树来高效解决此问题。 ... [详细]
  • Java 中的 BigDecimal pow()方法,示例 ... [详细]
  • 本文总结了汇编语言中第五至第八章的关键知识点,涵盖间接寻址、指令格式、安全编程空间、逻辑运算指令及数据重复定义等内容。通过详细解析这些内容,帮助读者更好地理解和应用汇编语言的高级特性。 ... [详细]
  • 探讨如何高效使用FastJSON进行JSON数据解析,特别是从复杂嵌套结构中提取特定字段值的方法。 ... [详细]
  • 本文详细介绍了如何使用Maven高效管理多模块项目,涵盖项目结构设计、依赖管理和构建优化等方面。通过具体的实例和配置说明,帮助开发者更好地理解和应用Maven在复杂项目中的优势。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • Google最新推出的嵌入AI技术的便携式相机Clips现已上架,旨在通过人工智能技术自动捕捉用户生活中值得纪念的时刻,帮助人们减少照片数量过多的问题。 ... [详细]
  • 本文探讨如何利用人工智能算法自动区分网页是详情页还是列表页,介绍具体的实现思路和技术细节。 ... [详细]
  • 探索如何使用公共数据集为您的编程项目提供动力。无论您是编程新手还是有经验的开发者,本文将为您提供实用建议和资源,帮助您启动并运行一个创新的数据驱动型项目。 ... [详细]
  • 尽管深度学习带来了广泛的应用前景,其训练通常需要强大的计算资源。然而,并非所有开发者都能负担得起高性能服务器或专用硬件。本文探讨了如何在有限的硬件条件下(如ARM CPU)高效运行深度神经网络,特别是通过选择合适的工具和框架来加速模型推理。 ... [详细]
  • 本文深入探讨了基于Pairwise和Listwise方法的排序学习,结合PaddlePaddle平台提供的丰富运算组件,详细介绍了如何通过这些方法构建高效、精准的排序模型。文章不仅涵盖了基础理论,还提供了实际应用场景和技术实现细节。 ... [详细]
author-avatar
拍友2502935047
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有