机器学习笔记1—泰勒展开式和牛顿法

2023-11-20


写在前面:自学机器学习的菜鸟一枚,希望通过记录博客的形式来记录自己一点点的进步~ 
下面都是学习过程中自己的一些思考和学习,希望大神们批评指正。

1.1 泰勒展开式

1.1.1泰勒展开式入门

首先,百度了一波,搜到了一个泰勒展开式入门的短短6分钟的视频,好像突然感受到了一点点数学的美。还有发现其实真的没有必要死记公式啊。泰勒展开式的入门浓浓的台湾腔调啊。


泰勒公式的表达式:就是下面这个看起来很复杂的公式。 

f(x)=n=0fn(a)n!(xa)n1f(x)=∑n=0∞fn(a)n!(x−a)n(1)


【对于泰勒展开式存在性的一些思考】 
一切事物都是存在即是合理,严密而美好的数学更是如此。 
关于多项式 (xa)2(x−a)2 
在历史的进程中,多项式是人们最熟悉的函数。对于一些比较复杂的函数,要对这些函数进行处理的时候,我们希望能够近似的将这些函数用我们熟悉的函数来表示。这就是为什么泰勒展开式中会有多项式的成分。当我们可以用这个多项式表示一个函数时,就应该更进一步的思考一下这个多项式之前的系数。

关于系数fn(a)n!fn(a)n! 
这个系数刻画了“一叶知秋”的含义。“一叶知秋”:一片叶子掉下来,就知道秋天来了。 
对于x=a这个点的领域,我们知道了它的一些信息:一阶变化率(知道了函数是增还是减),二阶变化率(知道了是凹还是凸)…..到n阶变化率)通过这些信息,基本就可以想象出这个函数的样子,一点看全的这种感觉。


1.1.2 泰勒展开式的推导

下面对泰勒展开式进行推导,这里是学习了[YuanLiangDing的博客](http://blog.sina.com.cn/s/blog_5d323f950101ieyo.html
里面介绍的很详细,在这里就不浪费时间敲字了。 
只稍微补充一下文中提到的:从函数的线性近似f(a+Δx)=f(a)+f(a)Δxf(a+Δx)=f(a)+f′(a)Δx来估计函数值。

估计函数在a点的值

如上图所示(字丑图丑)要估计a点的函数值,我们无法直接代入a来计算。所以就通过取a+Δxa+Δx这一点的函数值,使Δx0Δx→0f(a)f(a)f(a+Δx)f(a+Δx)近似相等。函数在a点的斜率为tanαtan⁡α忘记画出αα了。 
易知 

f(a+Δx)f(a)Δx=tanα(2)f(a+Δx)−f(a)Δx=tan⁡α(2)

又有 f(a)=tanα(3)f′(a)=tan⁡α(3)

将式(3)代入式(2)就得出了线性近似,也就是泰勒的一阶展开:

f(a+Δx)=f(a)+f(a)Δxf(a+Δx)=f(a)+f′(a)Δx


上面的的图片上已经有点函数定积分的几何意义的那个图的感觉了吧。这里就比较好理解为什么泰勒展开式会是由微积分基本定理,就是牛顿莱布尼茨公式通过一系列的换元,转换,得到了泰勒展开式。


1.2 牛顿法

这里是学习了luoleicn的专栏里关于牛顿法的文章很通俗易懂。 
总结如下: 
牛顿法主要有两方面的应用: 
1、求方程的根(函数比较复杂,没有求根公式)。 
2、应用于最优化方法求解无约束问题的最优解(通常是求函数的极大极小值)


1.2.1 求方程的根

这里马上就用到了刚刚泰勒展开式推导过程中用到的函数的线性近似公式,也就是泰勒公式的一阶展开。

原理:f(a+Δx)=f(a)+f(a)Δxf(a+Δx)=f(a)+f′(a)Δx

步骤:

(1). 第一步选取初始点,构造一阶泰勒展开式。 
x0x0处展开到一阶泰勒公式:f(x)=f(x0)+f(x0)(xx0)f(x)=f(x0)+f′(x0)(x−x0) 
求解f(x)=0f(x0)+f(x0)(xx0)=0f(x)=0⟹f(x0)+f′(x0)(x−x0)=0 
x1x1是上式的解: 
x1=x0f(x0)f(x0)x1=x0−f′(x0)f(x0) 
虽然这个x1x1并不是f(x)=0f(x)=0 的解,但它比f(x0)f(x0)更靠近0。 
(2).迭代公式 
xn+1=xnf(xn)f(xn)xn+1=xn−f′(xn)f(xn) 
根据上面公式迭代,必定能找到一个xx∗使得f(x)0f(x∗)→0


1.2.2 求最优化方法(非线性函数的无约束问题)

1、二维情况 
任务:优化目标函数ff,通常是求ff的极大极小值的问题。(基本所有的最优化问题都可以用minf(x)minf(x)的问题来描述)


补充: 
(1) 函数极小值的一阶必要条件:若xDx∗∈D是一个极小点,则必有f(x)=0f′(x∗)=0 
(2) 函数极小值的二阶必要条件:若xDx∗∈D是一个极小点,则必有f(x)=0f′(x∗)=0&&f′′(x)>0f″(x∗)>0


所以求ff的极小值问题可以转换为求f(x)=0f′(x)=0的解的问题。这就可以转化为上面的求方程根的方法了。 
对目标函数进行二次函数近似: 
f(x)=0f(x0)+f′′(x0)(x1x0)=0f′(x)=0⟹f′(x0)+f″(x0)(x1−x0)=0 
x1=x0f(x0)f′′(x0)⟹x1=x0−f′(x0)f″(x0) 
 
推出迭代公式: xn+1=xnf(xn)f′′(xn)xn+1=xn−f′(xn)f″(xn)

正规来说就是对函数f(x)f(x)进行二阶泰勒展开: 
原理:f(a+Δx)=f(a)+f(a)Δx+12f′′(x)Δx2f(a+Δx)=f(a)+f′(a)Δx+12f″(x)Δx2 
对函数f(x)f(x)近似二次函数近似。 
f(x)=f(xa)+f(xa)(xxa)+12f′′(xa)(xxa)2f(x)=f(xa)+f′(xa)(x−xa)+12f″(xa)(x−xa)2 
求解f(x)=0{f(xa)+f(xa)(xxa)+12f′′(xa)(xxa)2}=0f′(x)=0⟹{f(xa)+f′(xa)(x−xa)+12f″(xa)(x−xa)2}′=0

2、高维度 
这里x就不是简单的一个数字了,而是一个矩阵,更应该说是一个n维的列向量。 
推导过程和上面类似,这里我对包含矩阵的函数的求导还没有思考清楚,就贴上公式吧 
之后再具体学习一下。 
Xn+1=XnG1kgkXn+1=Xn−Gk−1gk


2015/10/29 first version


推导高维度的牛顿公式: 
f(X),Xf(X),X为n维列向量,表示含有n个变量。 

X=x1xnX=(x1⋮xn)

Xk=xk1xknXk=(xk1⋮xkn)

f(X)f(X) XkXk 处泰勒二阶展开。 
函数为二维时的展开公式: f(x)=f(xk)+f(xk)(xxk)+12f′′(xk)(xxk)2f(x)=f(xk)+f′(xk)(x−xk)+12f″(xk)(x−xk)2  
相应的高维展开式如下: 
f(Xk)=gk=f(Xk)f′(Xk)=gk=∇f(Xk)

f(X)=f(X)x1f(X)xnn×1∇f(X)=(∂f(X)∂x1⋮∂f(X)∂xn)n×1

f′′(Xk)=Gk=2f(Xk)f″(Xk)=Gk=∇2f(Xk)

2f(X)=2f(X)x212f(X)xnx12f(X)x1xn2f(X)x2nn×n∇2f(X)=(∂2f(X)∂x12⋯∂2f(X)∂x1∂xn⋮⋱⋮∂2f(X)∂xn∂x1⋯∂2f(X)∂xn2)n×n

XXk=x1xk1xnxknn×1X−Xk=(x1−xk1⋮xn−xkn)n×1

可以看出 f(X)∇f(X) XXkX−Xk 都是列向量,无法相乘取内积。所以这里要将 gkgk 转置。后面的 XXk2(X−Xk)2 也是一样的道理。 
所以对于高维函数的泰勒展开式为: 
f(X)=f(Xk)+gTk(XXk)+12(XXk)TGk(XXk)f(X)=f(Xk)+gkT(X−Xk)+12(X−Xk)TGk(X−Xk)

接着就应该求解 f(X)=0f′(X)=0  
这里就涉及到矩阵求导问题,先贴出我的参考链接 矩阵向量求导法则  
f(X)f(X) 求导时,就不要写成泰勒展开式的形式了,直接写成二维函数那个样子。我把它拆分为三部分。 
f(X)1=f(Xk)f(X)1=f(Xk)  
f(X)2=f(Xk)(XXk)f(X)2=f′(Xk)(X−Xk)  
f(X)3=12f′′(Xk)(XXk)2f(X)3=12f″(Xk)(X−Xk)2  
(1) 对 f(X)1f(X)1 求导, f(Xk)f(Xk) 不含有变量 XX 所以此项导数为0。 
(2) 对 f(X)2f(X)2 求导。 
gTkgkT 不含有变量 XX 所以为常数,不需要考虑,这时要求导的部分变成了 y=(XXk)y=(X−Xk) 。 
为简便,我设X为3维的列向量 
y=XXk=x1xk1x2xk2x3xk33×1y=X−Xk=(x1−xk1x2−xk2x3−xk3)3×1

yy XX 求导: yy 为矩阵 XX 为列向量。属于矩阵对列向量求导的那一类。 
根据求导公式: 
yX=y1Xy2Xy3X∂y∂X=(∂y1∂X∂y2∂X∂y3∂X)

对于 y1X∂y1∂X y1=x1xk1y1=x1−xk1 XX 求导,属于元素对列向量求导的类型。 
根据求导公式: 
y1X=y1x1y1x2y1x3=100∂y1∂X=(∂y1∂x1∂y1∂x2∂y1∂x3)=(100)

同理可知
y2X=010∂y2∂X=(010)

y3X=001∂y3∂X=(001)

yX=100010001∂y∂X=(100010001)

所以  f(X)2=f(Xk)=gkf′(X)2=f′(Xk)=gk  
(3) 对 f(X)3f(X)3 求导。 
与上一步类似。 
f(X)3=f′′(Xk)=Gkf′(X)3=f″(Xk)=Gk  
所以:  f(X)=gk+Gk(XXk)=0f′(X)=gk+Gk(X−Xk)=0  
GkGk 为非奇异(则矩阵可逆),解这个方程,记其解为 Xk+1Xk+1 即得牛顿法的迭代公式: 
Xk+1=XkG1kgkXk+1=Xk−Gk−1gk


2015/11/3 second version

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

机器学习笔记1—泰勒展开式和牛顿法 的相关文章

  • 算法:二分查找之第一个错误的版本

    方法一 class Solution public int firstBadVersion int n int left 1 int right n while left lt right int mid right left 2 left
  • 【React】 4课 react初识组件

    首先我们如1课创建一个文件夹在文件夹中安装react环境需要的配置文件 npm init y npm i babel standalone D npm i react react dom D 安装配置文件教程链接 https blog cs
  • 4个开源的Java代码静态分析工具

    1 PMD PMD是一款采用BSD协议发布的Java程序代码检查工具 该工具可以做到检查Java代码中是否含有未使用的变量 是否含有空的抓取块 是否含有不必要的对象等 该软件功能强大 扫描效率高 是Java程序员debug的好帮手 PMD支
  • Lex和Yacc应用教程(四).语法树的应用

    Lex和Yacc应用方法 四 语法树的应用 草木瓜 20070515 一 序 不论什么语言 语法结构总是那几种 可以想象任何程序体都可以解释成一棵语法树 语法树的本质是递归 很显然Yacc文法的核心思想也是递归 本文就通过具体实例 使用Ya
  • cesium加载影像的问题解决

    我用gdal把web墨卡托转为经纬度 再切分片时 发现对不上影像 经过两天排查 发现竟然是前端写错 viewer scene imageryLayers addImageryProvider new Cesium UrlTemplateIm
  • vscode乱码

    vscode中文乱码怎么解决 vscode是一款跨平台源代码编辑器 能够在桌面上运行 并且能够用途windows macOS以及Linux 但是有不少小伙伴们在使用vscode时 输入输出的却是中文代码 也不知道如何解决 那么今天小编就来告
  • Ribbon负载均衡策略DynamicServerListLoadBalancer的ServerListFilter解读

    一 DynamicServerListLoadBalancer在类图中的位置 二 DynamicServerListLoadBalancer源码解读 1 关键代码请见注释 2 源码位置 ribbon master ribbon loadba
  • JDK 8 List集合使用记录

    JDK8 的新特性给我们开发带来了很大的便利性 先声明 我没有系统的去学习 JDK8的这些所有新特性 本文只是记录一些我个人日常开发中常遇到的一些 JDK8 的新特性方法 1 提取对象集合中的某一属性集合 List lt 对象 gt gt
  • 【文件I/O】(一)标准I/O

    标准I O 库函数 一 I O相关知识 1 1最早接触的I O 1 2I O的种类 1 3库函数和系统调用 1 4什么是FILE 二 标准I O函数 1 fopen fclose strerror perror 打开 关闭文件 输出错误码信
  • 2022年网络安全比赛--数据库服务渗透测试中职组(超详细)

    2022年数据库服务渗透测试解析 一 竞赛时间 180分钟 共计3小时 二 竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 1 通过分析靶机Server01页面信息 寻找漏洞页面 将WEB服务存在SQL注入漏洞的页面名称作为Flag
  • 电脑提示vcomp100.dll丢失错误怎么办?(多种修复方法介绍)

    vcomp100 dll是由 Microsoft 开发的动态链接库 DLL 它是几个基于图形的应用程序 例如 Photoshop 以及多个游戏 例如巫师 3 所必需的 vcomp100 dll的作用包括 提供多线程支持 vcomp100 d
  • logback日志在项目启动后立刻清理历史日志

    扣扣技术分享交流群 1125844267 背景 搭了一个maven项目 只有一个main方法 然后打成一个jar包以供别的程序去启动执行 项目中配置了logback日志策略 但是在生产环境下发现日志可以正常生成 但是没有删除历史日志 设置的
  • 最全面、最详细web前端面试题及答案总结

    最全面 最详细web前端面试题及答案总结 总结不易 希望可以帮助到即将面试或还在学习中的web前端小伙伴 祝面试顺利 拿高薪 本章是HTML考点的 重难点 因此我们采 简略回答的 式进 撰写 所以不会有太多详细的解释 我们约定 每个问题后我
  • STM32外部EXTI中断笔记(开始于2021-07-13)

    STM32外部EXTI中断笔记 1 EXTI简介 在STM32上外部中断线共有19个 互联型 其上每个GPIO都可作外部中断输入 供GPIO的外部中断线供有16个 EXTI Line x x 0 15 stm32只分配7个中断向量给这16个
  • beego+goAdmin+mysql+docker+natapp作为微信小程序地服务器“伪部署”

    写在前面的话 1 为什么我要叫伪部署 答 因为我把它们放在服务器运行 都是开发模式 生产模式实在不会弄 所以就这样了 2 系统环境 答 腾讯云服务器 系统为 ubuntu 版本不记得 应该是比较高的 3 前提假设 答 假设你的服务器已经安装
  • Nginx启动报No mapping for the Unicode character exists in the target multi-byte code pa

    安装路径不能含有中文

随机推荐

  • UnityVR--组件3--Line Renderer--线性渲染

    目录 线性渲染组件简介 绘制线条Line Renderer组件介绍 绘制拖尾Trail Renderer组件介绍 应用1 使用Line Renderer绘制线段 应用1实现 使用系统工具或自定义工具绘制线段 应用2 Trail Render
  • 【数据结构】带你手撕八大排序

    目录 一 排序的基础知识 1 排序的概念 2 排序的应用 3 常见的排序算法 二 八大排序的实现 1 插入排序 直接插入排序 直接插入排序的特性总结 2 插入排序 希尔排序 希尔排序的特性总结 3 选择排序 直接选择排序 直接插入排序特性总
  • 老版迅雷5.8无限制经典版

    迅雷5 8不升级版是一款经典热门的P2P下载工具 迅雷5 8去广告绿色版已完全对弹出式广告进行屏蔽 并自动开启高速下载通道 支持磁力链接和网页下载 完美支持WIN8 1 WIN10 不定时检测去除无用组件 为用户提供绿色纯净的下载环境和高速
  • CentOS7 安装Teamviewer

    CentOS7 安装Teamviewer 下载 wget https download teamviewer com download teamviewer i686 rpm 安装 yum install y 文件名 在终端执行一下命令进行
  • 异步通信时钟亚稳态打拍

    为了降低亚稳态出现的概率把异步信号单比特打两排 将下面的即可 最后用第三位的数据就是打两拍后的结果 在这里插入代码片 reg 2 0 wr n r always posedge clk or nesedge rst n begin if r
  • FPGA学习笔记(一)__电平知识

    常见电平标准 文章目录 1 TTL电平标准 2 LVTTL电平标准 1 LVTTL3V3 2 LVTTL2V5 3 CMOS电平标准 4 LVCOMS电平标准 1 LVCOMS3V3 2 LVCOMS2V5 3 LVCOMS1V8 4 LV
  • 选择多级分类_分类汇总——Excel中最直接有效的数据汇总方式

    在我们正常处理数据过程中 通常会有用到对数据中某一个或者多个指标 字段 进行汇总 求和 求平均等 的操作 我们可以使用譬如sumif sumifs averageif count等一些函数进行 这些函数在后面的文章中我也会讲到 今天我们来讲
  • [项目管理-15]:项目执行中的三大管理者:项目活动管理、职能部门管理、产品架构设计。

    目录 1 矩阵项目管理 2 项目活动管理 2 1 项目架构 2 2 项目管理活动 3 职能部门管理 要与产品 设备架构一致 3 1 组织架构 3 1 需求部门 3 2 硬件开发部门 3 3 软件开发部门 3 4 测试部门 4 产品设备管理
  • 部署前后端分离项目前端vue后端django

    1 前端部署 前后端分离的项目 部署时 前端我们只需要打包成dist文件 放到到后端项目中即可 npm run build 2 后端部署 后端部署 我这里主要讲基于uwsgi启动项目的方式 2 1 uwsgi的配置 uwsgi master
  • 6个好用的AI绘画工具,一键生成超精美图片!

    给大家分享6个好用的AI绘画工具 操作简单 小白也能用 生成的图片效果也好 其中有几个还完全免费 先给大家看看一些生成的图片吧 1 Vega AI 一个免费的AI绘画网站 手机号登录之后就可以使用了 它有文生图 图生图和条件生图的模式可选
  • 2023年最新5A景区有多少个?Python可视化告诉你

    2023年最新5A景区有多少个 Python可视化告诉你 五一小长假来了 很多人想抓住小长假的机会去旅游 5A景区是大多数人的首选 全国最新有多少个5A景区呢 应该还有很多人不知道 本文用Python进行可视化 告诉你答案 各年5A景区数量
  • vue3使用import.meta.env在vite.config.ts下使用env环境变量的方法

    vue3使用import meta env在vite config ts下使用env环境变量的方法 编程一枚的博客 CSDN博客
  • 一个关于jvm堆溢出引发的思考

    在本地测试无误的程序 放上正式服时 出现了堆溢出 本地是Windows系统下的 服务器是linux系统 后来经过测试发现是我在本地跑程序时 在eclipse中添加了如下参数 此处先解释下上面各参数的的含义 Xms512m 堆的最小值 Xmx
  • mysql视图

    一 什么是视图 视图是指计算机数据库中的视图 是一个虚拟表 其内容由查询定义 同真实的表一样 视图包含一系列带有名称的列和行数据 但是 视图并不在数据库中以存储的数据值集形式存在 行和列数据来自由定义视图的查询所引用的表 并且在引用视图时动
  • Java使用反射实现IOC容器

    前面写过怎么通过Java的反射技术实现对象的创建和管理 达到IOC的效果 但是没有讲设计的思路 直接上代码 导致很多人没有思路 因此今天具体的讲IOC的编写思路理清 这里单纯的通过Java中的反射创建对象 至于扩展的部分会有提示思路 既然提
  • 【深度解析→博文总结】李宏毅机器学习2023作业05Transformer(Machine Translation)

    文章目录 系列文章 简要说明 视频分享 作业详情 调参记录 Simple Baseline 15 05 Medium Baseline 18 44 Strong Baseline 23 57 Boss Baseline 30 08 资源链接
  • CVE-2019-11043(PHP远程代码执行漏洞)

    一 漏洞描述 CVE 2019 11043 是一个远程代码执行漏洞 使用某些特定配置的 Nginx PHP FPM 的服务器存在漏洞 可允许攻击者远程执行代码 向Nginx PHP FPM的服务器 URL发送 0a 时 服务器返回异常 该漏
  • windows配置检查

    文章目录 2 1 账号口令 2 1 1 检查是否已正确配置密码最长使用期限 2 1 2 检查是否已正确配置密码长度最小值 2 1 3 检查是否已正确配置 强制密码历史 2 1 4 检查是否已正确配置帐户锁定时间 2 1 5 检查是否已正确配
  • 操作系统简史(1)东方会有新的操作系统诞生吗?让历史告诉未来

    打造一个新的操作系统很难 打造一个新的操作系统不难 难的是建立一个以之为核心的生态系统 估计大家都被这两个问题给困惑过 第一个问题的答案是 有难度 但也不像许多人想象的那样难 如果不是这样 那么我们今天就不会用到Windows 不会用到Li
  • 机器学习笔记1—泰勒展开式和牛顿法

    写在前面 自学机器学习的菜鸟一枚 希望通过记录博客的形式来记录自己一点点的进步 下面都是学习过程中自己的一些思考和学习 希望大神们批评指正 1 1 泰勒展开式 1 1 1泰勒展开式入门 首先 百度了一波 搜到了一个泰勒展开式入门的短短6分钟