1. 程式人生 > >《凸優化》學習筆記(一)

《凸優化》學習筆記(一)

凸優化在數學優化中有著重要且特殊的身份。數學優化是一個廣泛的話題,理解凸優化之前,請先理解線性優化。在機器學習演算法中,已知的比如LogisticRegression,SVM,都與數學優化有關,在數學中,不存在無約束優化問題。比較常見的構建損失函式方法,從最簡單的兩個向量的二階範數的平方(KNN,Kmeans)到linearRegression、LogisticRegression的最小二乘模型,再到SVM的二次凸優化,都和數學優化理論緊密相關。本篇筆記主要學習數學優化的前奏部分:凸優化的概念部分。

1.1.1數學優化

--------------------①

這是數學優化的最基本形式。其中,x = (x1,x2,……xn)稱為優化變數,函式

稱為目標函式,函式稱為約束函式。常數稱為約束上限或者約束邊界。如果在所有滿足約束的向量中向量對應的目標函式值最小,那麼他就是問題的最優解。

在機器學習理論的推導中,一般只考慮特殊的優化問題,線性優化問題。對於上式,如果目標函式和約束函式都是線性函式,即對於任意的,都有:

------------------------------------②

則此問題成為線性規劃。在機器學習演算法中,還需要進一步特化,就是凸優化。凸優化中目標函式和約束函式都屬於凸函式,即對於任意的,任意,都有:

--------------------------------③成立。比較③和②式可以發現,③式是②式的特殊形式。只用在

或者其中一個為0的情況下才成立。不同的是兩者的嚴格程度,後者凸優化是不太嚴格的線性優化問題。所以可以用線性優化的手段來解決凸優化問題,甚至包括特殊情況下的非線性規劃問題,也可以採取特殊手段往這個方向靠攏(目前在業內,對於非線性優化問題的求解還不算成熟)。上一篇部落格中推導過LogisticRegression的似然函式(與損失函式取反),其實屬於非嚴格意義上的凸優化問題,包括線性迴歸,這類問題的損失函式構建可以用最小二乘模型來解決,它本身屬於線性優化問題的範疇。(對於凸函式的定義,有不同的說法。比如,一般認為二階導數<0的函式屬於凸函式,>0屬於凹函式。因為二階導數<0意味著一階導數屬於減函式,也就是原函式的切線的斜率是不斷減小的,這種情況原函式就只能是先增後減了。)在凸優化中,如果函式的自變數是R,我們認為二階導數>=0的函式為凸函式,反之為凹函式。

對於凸優化問題,我們認為目標函式是成本函式,在優化變數滿足約束的情況下,讓成本或者損失最小。

1.1.2 線性優化問題的求解

在工程實際應用中,我們需要的是得到稀疏性的解,不僅可以減少迭代次數,還可以解決過擬合問題,增強模型的解釋能力。關於sparse問題,有專門的研究課題(比如lasso學術研究,CD演算法,LAR演算法),這裡不討論。對於優化問題的求解,有兩類非常重要且廣泛的求解方法:最小二乘法和線性規劃問題。還有一類特殊的優化方法:凸優化。

1.2 最小二乘問題

線上性迴歸的損失函式的推導中,假定認為偏差( = real - predict)遵循Gaussian Destribution(N(0,1)),根據判別學習模型估計最大似然函式,最後得出來的結論其實是最小二乘模型。最小二乘問題是迴歸問題,最優控制以及很多引數估計和資料擬合方法的基礎。在統計學中有著很重要的意義,比如給定包含高斯噪聲的線性測量值時,似然函式的估計的最優解是最小二乘法。如果目標函式是二次函式並且半正定(開口朝上,並且函式值不全>0) ,他就是最小二乘問題。

用數學公式來解釋,最小二乘問題屬於特殊的數學優化問題,沒有約束(m=0)。目標函式其實是由偏差組成的列向量的二階範數的平方(個人理解),如下形式的優化:

--------------------------------------④

其中,A可以理解為機器學習中特徵矩陣,x為估計引數,b為真實值組成的列向量,最後面的部分是拆解後的結果。在求解時,一般採用傳統的線上學習方法SGD。

正則化是此類問題的熱點。上個世紀90年代,有學者提出lasso,此後論文被引用了14000多次,由此可見lasso的重要性。在機器學習中,提高模型的泛化能力很重要。LogisticRegression的處理主要有嶺迴歸和L1範數,關於這方面,專門寫一篇部落格。

1.2.2 線性規劃

另一類比較重要的問題是線性規劃。如下形式:

-------------------⑤

。對線性規劃的求解 ,一般採用內點法,對於原始問題不是線性規劃的問題,可以通過一定的技巧轉化為線性規劃問題。作為一個簡單的例子,考慮Chybeshev逼近問題:

 

這個公式和前面的最小二乘很相似,不同的是這個公式取偏差的絕對值的最大值作為優化目標。求解這個問題,可以轉換成如下形式的線性規劃問題:

 1.3 凸優化

SVM就屬於典型的凸優化範疇。求解凸優化問題並不是一件特別難的事兒,難的在於如何判斷問題屬於凸優化問題,如何轉化成凸優化問題。在機器學習的範疇中,更多的是凸優化和非凸優化的判斷。求解凸優化的方法有內點法,但是凸優化的求解並不像最小二乘和線性規劃那樣成熟。凸優化的形式和公式①一樣,目標函式和約束函式都是凸函式。

相關推薦

優化學習筆記

凸優化在數學優化中有著重要且特殊的身份。數學優化是一個廣泛的話題,理解凸優化之前,請先理解線性優化。在機器學習演算法中,已知的比如LogisticRegression,SVM,都與數學優化有關,在數學中,不存在無約束優化問題。比較常見的構建損失函式方法,從最簡單的兩個向量的二

學習筆記ubuntu必備軟體安裝及主題優化

注:本文非標準教程,僅是總結個人學習過程,可能存在紕漏,如有錯誤之處歡迎留言告知,非常感謝 本機環境是ubuntu16.04 64位 終端中複製是ctrl+shift+C 貼上是ctrl+shift+V 一、主題優化: 1.超級好看的扁平化風格主題f

python框架之 Tornado 學習筆記

tornado pythontornado 一個簡單的服務器的例子:首先,我們需要安裝 tornado ,安裝比較簡單: pip install tornado 測試安裝是否成功,可以打開python 終端,輸入: import tornado.https

Scala學習筆記編程基礎

大數據 上一個 extends 移除 condition api arr 調用方法 tab 強烈推薦參考該課程:http://www.runoob.com/scala/scala-tutorial.html 1. Scala概述 1.1. 什麽是Scala Scala

3D Game Programming withDX11 學習筆記 數學知識總結

表示 圖形 http 根據 轉置 元素 material -s com   在圖形學中,數學是不可或缺的一部分,所以本書最開始的部分就是數學知識的復習。在圖形學中,最常用的是矢量和矩陣,所以我根據前面三個章節的數學知識,總結一下數學知識。 一、矢量   數學中的矢量,擁有

系統分析與設計學習筆記

學習 掌握 應該 溝通 基本 最終 表示 對象 毫無 為什麽要學習這門課程?   “擁有一把錘子未必能成為建築師”。 這門課程學習的是面向對象分析和設計的核心技能的重要工具。對於使用面向對象技術和語言來,創建設計良好、健壯且可維護的軟件來說,這門課程所

最大熵學習筆記預備知識

color wrap targe dsm entropy plus 文件 eight 相關鏈接 生活中我們常常聽到人們說“不要把雞蛋放到一個籃子裏”。這樣能夠減少風險。深究一下,這是為什麽呢?事實上,這裏邊包括了所謂的最大熵原理(The Maxim

Nginx模塊之Nginx-Ts-Module學習筆記搶險體驗

學習筆記 體驗 nginx模塊 int images clas tps gin issues 1、通過HTTP接收MPEG-TS2、生產和管理Live HLS 3、按照官方的編譯和配置,當然了我是第一次編譯沒有通過,在作者重新調整下,編譯成功,感謝:@arut https:

jq學習筆記

簡單 ren 當前 一個 text 互斥 元素 如果 property 1 .attr() 與 .removeAttr()方法 - atr()方法用來獲取和設置元素屬性 attr()有4個表達式: attr(傳入屬性名):獲取屬性的值 attr(屬性名, 屬性

Redis學習筆記關於在windows64位環境下的安裝學習使用

客戶端 mas key-value 錯誤 services 再次 基準 alt 類型 前言 由於工作需要,目前我正在學習使用Redis。我當時學習Redis就從網上下載了點資料就開始學習了。入門看的是《REDIS入門指南》,這本書個人覺得很適合新手用來學習接觸。根據書上的引

Memcache 學習筆記----Memcache — Linux部署

工作 apach sch trick 解壓 font ash 一個 鍵值   Memcache 一、Memcache簡介(內容摘自 --百度百科)   memcache是一套分布式的高速緩存系統,由LiveJournal的Brad Fitzpatrick開發,但目前被許多網

HtmlParser學習筆記-- 創建Parser對象

nco 修改 英文 text aid 意思 charset 網頁 第一個 首先 ,介紹下HTMLParser的核心類,org.htmlparser.Parser類,這個類實際完成了對於HTML頁面的分析工作。主要的構造函數如下: public Parser ();

Python 學習筆記

pytho oat 變量 情況 class 弱類型 定義 寫代碼 基本上 為什麽學習Python?因為Python 的用處太多了。 本想學會一們語言就好好的維持下去,但是最近Python太火啦,什麽人工智能、網絡爬蟲的,耳濡目染的,心想多學習一些東西總是好的,於是就抽空學習

thphp5.0學習筆記

mic tel 序號 app clas world char p s 庫類 1.目錄結構: 其中thinkphp子目錄是框架核心目錄 thinkphp結構: 2.入口文件 默認自帶的入口文件位於public/index.php 應用目錄為application,其結構

Unity Shader學習筆記坐標變換

directx 渲染 系列 約束 shade ace cnblogs 相機 它的 基本問題   試想我們的美術做了一個3D模型,然後渲染引擎把模型渲染到屏幕上。我們還可以選定不同的視角,模擬不同的光照條件去觀察模型。現在來分析一下這個過程。如果說我們把這個過程看成一個函數,

Django學習筆記——安裝,創建項目,配置

lvs csv oot url root import 方式 配置文件 函數 瘋狂的暑假學習之 Django學習筆記(一) 教材 書《The Django Book》 視頻:csvt Django視頻 1.創建項目

ELK學習筆記安裝Elasticsearch、Kibana、Logstash和X-Pack

成功 前端 功能 靈活 日誌分析 傳統 開發人員 收集 還在 最近在學習ELK的時候踩了不少的坑,特此寫個筆記記錄下學習過程。 日誌主要包括系統日誌、應用程序日誌和安全日誌。系統運維和開發人員可以通過日誌了解服務器軟硬件信息、檢查配置過程中的錯誤及錯誤發生的原因。經常分析日

移動端學習筆記

標簽設置 裏的 none trait 關於 http width 面具 屏幕 <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=.5,minimum-s

mongoDB學習筆記

介紹 tle 狀態 負載 tutorial dir 基於 管理 集合 說明: MongoDB由databases組成,database由collections組成,collection由documents組成,document由fileds組成。MongoDB是異步寫數據

c 語言學習筆記基礎

lac alert https 內容 con 標記 prime c++ prime c基礎 近期工作上有對C語言算法上的需求,所以要學C,上學的時候沒學過,只學過半年的Java(我是專升本,本科學的材料),2015年工作後也學過C,那時候的需求是能看懂就可以,也就沒深入研究