1. 程式人生 > >一階梯度法、二階段梯度法、牛頓法

一階梯度法、二階段梯度法、牛頓法

目標

有一個函式 f ( x ) f(x) ,我們要求得函式的最小值(或者最大值),由於最值點一般也是極值點,所以求出所有極值點,然後進行對比就能得到我們要的最值,可以理解為一個最小二乘的問題 min

x 1 2 f ( x
) 2 2 \min_x \frac {1}{2}\| f(x)\|^2_2

解法

最暴力的方法,直接求解 d

1 2 f ( x ) 2 2 d x = 0 \frac {d \frac{1}{2}\|f(x)\|^2_2} {dx} =0
當然,如果能夠直接解出結果,那就很好了,但是大多數情況下很難解。當沒法求解的時候,可以採用迭代的方法:

  1. 給定某個初始值 x 0 x_0
  2. 對於第k次迭代,尋找一個增量 Δ x \Delta x ,使得 f ( x k + Δ x ) 2 2 \|f(x_k+\Delta x)\|^2_2 達到極小值。
  3. Δ x \Delta x足夠小,則停止
  4. 否則,令 x k + 1 = x k + Δ x k x_{k+1}=x_k+\Delta x_k ,返回第2步。

下面介紹一下幾個迭代的方法,都是在找 Δ x \Delta x

一階梯度法

f ( x ) f(x) 在x附近進行泰勒展開 f ( x + Δ x ) 2 2 f ( x ) 2 2 + J ( x ) Δ x + 1 2 Δ x T H Δ x \|f(x+\Delta x)\|^2_2\approx\|f(x)\|^2_2+J(x)\Delta x+\frac{1}{2}\Delta x^TH\Delta x
x是常量,同時也是個向量; Δ x \Delta x 才是變數, J ( x ) J(x) 是雅可比矩陣, H H 是海塞矩陣,可以將J(x)理解為矩陣形式的一階導數, H H 理解為矩陣形式的二階導數

導數:指的是函式值增加的速度,速度是個向量(有大小,有方向),在一維的情況下,也是一樣的,可以這樣理解,假設 f ( x ) = 1 2 x 2 f(x)=\frac{1}{2}x^2 ,則 f ( x ) = x f^{&#x27;}(x)=x , f ( x ) f(x) 是關於y軸對稱,最小值在原點的函式,當x<0的時候,導數也是<0的,當x>0的時候,導數是>0的,可以把±號看成方向。

梯度:梯度的本意是一個向量(向量),表示某一函式在該點處的方向導數沿著該方向取得最大值,即函式在該點處沿著該方向(此梯度的方向)變化最快,變化率最大(為該梯度的模)。
設f(x)是一個多元函式,則梯度是向量 ( d f ( x ) d x 1 , d f ( x ) d x 2 , , d f ( x ) d x n , ) (\frac{d f(x)}{d x_1},\frac{d f(x)}{d x_2},…,\frac{d f(x)}{d x_n},…)

雅可比矩陣:設 y = f ( x ) y=f(x) ,x和y都是一個向量,則對應的雅可比矩陣為
J = [ d y 1 d x 1 d y 1 d x 2 d y 1 d x n d y 2 d x 1 d y 2 d x 2 d y 2 d x n d y m d x 1 d y m d x 2 d y m d x n ] J=\begin{bmatrix} \frac{d y_1}{d x_1} &amp; \frac{d y_1}{d x_2} &amp; … &amp;\frac{d y_1}{d x_n}\\ \\ \frac{d y_2}{d x_1} &amp; \frac{d y_2}{d x_2} &amp; … &amp;\frac{d y_2}{d x_n}\\\\ … &amp;…&amp;…&amp;… \\ \\ \frac{d y_m}{d x_1} &amp; \frac{d y_m}{d x_2} &amp; … &amp;\frac{d y_m}{d x_n}\end{bmatrix}

相關推薦

MATLAB學習筆記05——無約束維極值問題()斐波那契基本牛頓和全域性牛頓

一、斐波那契法 1.斐波那契法與黃金分割法不同的是,黃金是單向縮小區間的演算法,斐波那契是雙向收縮。 斐波那契數列指的是 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89

查詢演算法(順序查詢二分查詢叉樹查詢hash查詢)

查詢功能是資料處理的一個基本功能。資料查詢並不複雜,但是如何實現資料又快又好地查詢呢?前人在實踐中積累的一些方法,值得我們好好學些一下。我們假定查詢的資料唯一存在,陣列中沒有重複的資料存在。 (1)順序查詢(普通的資料查詢)                   設

Linux 學習 搭建環境系列之 安裝 python3.6setuptoolspip

如果本機安裝了python2,儘量不要管他,使用python3執行python指令碼就好,因為可能有程式依賴目前的python2環境,比如yum!!!!!不要動現有的python2環境!一、安裝python3.61. 安裝依賴環境  # yum -y install zlib-devel bzip2-deve

對數幾率回歸梯度下降,隨機梯度下降與牛頓)與線性判別(LDA)

3.1 初始 屬性 author alt closed sta lose cnblogs   本文主要使用了對數幾率回歸法與線性判別法(LDA)對數據集(西瓜3.0)進行分類。其中在對數幾率回歸法中,求解最優權重W時,分別使用梯度下降法,隨機梯度下降與牛頓法。 代碼如下:

C++ 數組維數組函數參數

uri esp 操作 屬於 另一個 普通 第一個 做的 turn 一維數組: 1 #include <iostream> 2 using namespace std; 3 int main() 4 { 5 /**為了方便 數組的類型全部都是i

關於分布式事務階段提交協議三階提交協議

可用 正式 一句話 應用程序 回滾 版本 article none 大型 http://blog.jobbole.com/95632/ 隨著大型網站的各種高並發訪問、海量數據處理等場景越來越多,如何實現網站的高可用、易伸縮、可擴展、安全等目標就顯得越來越重要。 為了解決

MySQL錯誤日誌進制日誌慢查詢日誌事務日誌

文件信息 comm nes 文件中 二進制日誌 expr mysq 文本 分別是 錯誤日誌:Error log 默認情況下錯誤日誌大概記錄以下幾個方面的信息: 1、服務器啟動和關閉過程中的信息(未必是錯誤信息,例如,mysql如何啟動INNODB的表空間文件的、如何初始化

叉樹叉查詢樹B-B+樹

1.0二叉樹 一種樹結構,每個節點至多隻有兩個子樹,且子樹有左右子樹之分,其次序不能隨意顛倒 1.1  二叉查詢樹 又稱二叉搜尋樹或二叉排序樹或者B樹,是最基本的查詢樹,是AVL樹,紅黑樹等查詢樹的基礎。 1.1.1  二叉查詢樹的特點 二叉查

【數學】梯度下降,牛頓與擬牛頓

梯度下降 將f(x)f(x)一階泰勒展開: f(x)=f(x0)+(x−x0)f′(x0)f(x)=f(x0)+(x−x0)f′(x0) f(x)=f(x0)+Δxf′(x0)f(x)=f(x0)+Δxf′(x0) 如果當前處於x0x0節點,要使得前進同樣的

卷積神經網路(CNN)之一維卷積維卷積三維卷積詳解

由於計算機視覺的大紅大紫,二維卷積的用處範圍最廣。因此本文首先介紹二維卷積,之後再介紹一維卷積與三維卷積的具體流程,並描述其各自的具體應用。 1. 二維卷積 圖中的輸入的資料維度為14×1414×14,過濾器大小為5×55×5,二者做卷積,輸出的資料維度為10×1

MATLAB--條件插值維插值擬合

%% 樣條邊界條件插值 x=linspace(0,2*pi,15); y=sin(x); plot(x,y,'o') hold on% complete p=csape(x,y,'complete',[2,2]); x1=linspace(0,2*pi,150); y1=pp

關於分散式事務階段提交協議三階提交協議

分散式一致性回顧 在分散式系統中,為了保證資料的高可用,通常,我們會將資料保留多個副本(replica),這些副本會放置在不同的物理的機器上。為了對使用者提供正確的增\刪\改\差等語義,我們需要保證這些放置在不同物理機器上的副本是一致的。 為了解決這種分散式一致性問題

B樹B-樹B+樹B*樹紅黑樹 叉排序樹trie樹Double Array 字典查詢樹簡介

B  樹 即二叉搜尋樹:      1.所有非葉子結點至多擁有兩個兒子(Left和Right);       2.所有結點儲存一個關鍵字;       3.非葉子結點的左指標指向小於其關鍵字的子樹,右指標指向大於其關鍵字的子樹;       如:       B樹的

從最初的感動開始--數值計算【1】--梯度下降與牛頓

直觀來說,牛頓法因為使用了二階導資訊,比單純的一階導數的梯度下降法,其發現極值點回收斂得更快。 我個人的理解,梯度下降考慮了函式值下降最快的方向(梯度方向)。而在有些情況下,按這樣的規則改變自變數取值,可能會走彎路。 其根本原因在於,梯度下降法,能夠保證函式值在改點處的變化

叉樹的先序建立,先序遍歷中序遍歷後序遍歷全部結點數叉樹深度葉子結點數叉樹左右子樹交換

#include<stdlib.h> #include<stdio.h> #include<conio.h>  typedef   char t;                          //定義資料型別 typedef

三種梯度下降的方式:批量梯度下降小批量梯度下降隨機梯度下降

在機器學習領域中,梯度下降的方式有三種,分別是:批量梯度下降法BGD、隨機梯度下降法SGD、小批量梯度下降法MBGD,並且都有不同的優缺點。下面我們以線性迴歸演算法(也可以是別的演算法,只是損失函式(目標函式)不同而已,它們的導數的不同,做法是一模一樣的)為例子來對三種梯度下

機器學習:梯度下降和牛頓

一、問題描述 考慮將基本梯度下降和牛頓法應用到表中的資料上。 (a)用這兩種演算法對二維資料給出 和 的判別。對梯度下降法取 。畫出以迭代次數為準則函式的曲線。 (b)估計這兩種方法的數學運算量。 (c)畫出收斂時間-學習率曲線。求出無法收斂的最小學習率。 二、

美團——股票交易日維陣列列印奇數位丟棄字元編碼(哈弗曼編碼)

股票交易日和二維陣列列印這兩道題就是time to sell stock和蛇形矩陣。 題目奇數位丟棄:(關於LinkedList和listIterator的使用) 對於一個由0..n的所有數按升序組成的序列,我們要進行一些篩選,每次我們取當前所有數字中從小到大的第奇

叉樹的建立叉排序樹前序中序後序層次遍歷

<pre name="code" class="java">package com.sun.example1; import java.util.LinkedList; import java.util.Queue; class Node { public