math: 凸函式、擬凸函式和保凸運算
這一節主要學習凸函式的定義以及性質。瞭解保凸運算,以及上鏡圖與下水平集等。這些基礎知識看似零亂,然而卻是後面的基礎。特別是,在實際應用中如果我們能把一個問題轉化為凸優化問題,是非常好的一步。而能夠這樣做的前提,是知道基本的函式的凸性以及有哪些保凸運算。上鏡圖有助於我們從集合的角度理解這個函式為什麼是凸的(集合的保凸運算);水平集是以函式的形式表示集合,類似於等高線,在歷史上是重要的方法。這裡我們通過下水平集把函式的凸性和集合的凸性聯絡了起來。
基本性質
定義
凸函式(Convex)的定義如下:
即:自變數的凸組合的函式值小於等於函式值的凸組合。
嚴格凸函式,只要把等號去掉。
凹函式(Concave)是凸函式取負號。
仿射函式是既凸且凹的
常見的凸函式
- 仿射函式
- eaX,∀a∈R
- 指數函式:xα在R++,對α≥1或者α≤0
-
擴充套件值延伸
定義凸函式在定義域外的值為∞,從而將定義域延伸至全空間Rn。
一階條件(First Order Conditions)
函式f可微分,則函式f是凸函式的充要條件是其定義域dom f是凸集且對於任意的x,y∈domf,下式成立
f(y)≥f(x)+∇f(x)T(y−x)即大於等於一階泰勒近似。上式說明了一個凸函式的區域性資訊。對於嚴格凸和凹函式,有相應的結論。
對於一個凸函式,其一階泰勒近似是原函式的一個全域性下估計。反之,若某個函式的一階泰勒近似總是其全域性下估計,則這個函式是凸的。
二階條件
函式f二階可微(函式在定義域的開集上處處存在二階導數),則f是凸函式的充要條件是:其Hessian矩陣是半正定矩陣。即對於所有x∈domf,有
∇2f(x)⪰0此條件說明函式的倒數是非遞減的。從幾何上看是指函式影象在x點具有正的曲率。
函式f二階可微(函式在定義域的開集上處處存在二階導數),則f是凹函式的充要條件是:其Hessian矩陣是半負定矩陣。即對於所有x∈domf,有
∇2f(x)⪯0R上的例子
- 指數函式。對任意a∈R, 函式eax在R上是凸的
- 冪函式。當a≥1或者a≤0時,xa在R++上是凸函式;當0≤a≤1時,xa在R++上是凹函式
- 絕對值冪函式。當p≥1時,函式|x|p在R上是凸函式。
- 對數函式。函式log
- 負熵。函式xlog(x)是定義域上的凸函式。
Rn上的一些例子
範數。Rn上任意範數為凸函式。
最大值函式。函式f(x)=max{x1,...,xn}在Rn上是凸的。
二次-線性分式函式。函式f(x,y)=x2/y,其定義域為d
相關推薦
math: 凸函式、擬凸函式和保凸運算
這一節主要學習凸函式的定義以及性質。瞭解保凸運算,以及上鏡圖與下水平集等。這些基礎知識看似零亂,然而卻是後面的基礎。特別是,在實際應用中如果我們能把一個問題轉化為凸優化問題,是非常好的一步。而能夠這樣做的前提,是知道基本的函式的凸性以及有哪些保凸運算。上鏡圖有助於我們從集合的
找工作筆試面試那些事兒(5)---建構函式、解構函式和賦值函式
作者:寒小陽 時間:2013年9月。 出處:http://blog.csdn.net/han_xiaoyang/article/details/10833931。 宣告:版權所有,轉載請註明出處,謝謝。 類的建構函式、解構函式與賦值函式 &
請為CMyString型別編寫建構函式、copy建構函式、解構函式和賦值運算子函式。
如下為型別CMyString的宣告,請為該型別編寫建構函式、copy建構函式、解構函式和賦值運算子函式。 1 class CMyString 2 { 3 public: 4 CMyString(const char* pData = nullptr); 5 CMyS
類和物件——建構函式、解構函式、複製建構函式
類: 要宣告類,用class,注意區分大小寫。類含有成員屬性和方法。在宣告類的末尾要加分號; 物件: 宣告完類之後,它並不能對程式產生任何影響。只有依據類,例項化物件,才可以訪問類成員屬性和方法。 下面是類例項化物件、動態分配記憶體與變數的對比: double pi=3.14; int* p
Scala中的隱式轉換函式、隱式引數和隱式類
所謂隱式轉換函式指的是implicit關鍵字修飾的且只有一個引數的函式。 例如: inplicit def int2String(n:Int):String = (n.toString) 上案例:我們把Fruit物件轉換成了Monkey物件 //
【C++筆記】編寫類string的建構函式、解構函式和賦值函式
#include<iostream> using namespace std; class String { public: String(const char *str=NULL); //普通建構函式 String(const Stri
tf.nn.conv2d函式、padding型別SAME和VALID、tf.nn.max_pool函式、tf.nn.dropout函式、tf.nn.softmax函式、tf.reduce_sum函式
tf.nn.conv2d函式: 該函式是TensorFlow裡面實現卷積的函式。 函式形式: tf.nn.conv2d (input, filter, strides, padding, use_cudnn_on_gpu=None, data_format=None,
建構函式、解構函式和變數的生存期
//referred from Wei Guo, Peking University #include<iostream> using namespace std; class Demo{ int id; public: Demo(int i)
C++在單繼承、多繼承、虛繼承時,建構函式、複製建構函式、賦值操作符、解構函式的執行順序和執行內容
一、本文目的與說明 1. 本文目的:理清在各種繼承時,建構函式、複製建構函式、賦值操作符、解構函式的執行順序和執行內容。 2. 說明:雖然複製建構函式屬於建構函式的一種,有共同的地方,但是也具有一定的特殊性,所以在總結它的性質時將它單獨列出來了。
編寫類String的建構函式、拷貝建構函式、解構函式和賦值函式
class String { public: String(const char *str = NULL); // 普通建構函式 String(const String &other); // 拷貝建構函式 ~String(void);
編寫類String 的建構函式、拷貝建構函式、解構函式和賦值函式
編寫類String 的建構函式、解構函式和賦值函式,已知類String 的原型為: class String { public:String(const char *str = NULL); // 普通建構函式String(const String &other
友元(友元函式、友元類和友元成員函式) C++
有些情況下,允許特定的非成員函式訪問一個類的私有成員,同時仍阻止一般的訪問,這是很方便做到的。例如被過載的操作符,如輸入或輸出操作符,經常需要訪問類的私有資料成員。 友元(frend)機制允許一個類將對其非公有成員的訪問權授予指定的函式或者類
虛擬函式、純虛擬函式、抽象類、抽象方法和介面
首先講下自己最近的電話面試遇到的相關問題。1、多型的兩種實現方式?2、虛擬函式與純虛擬函式的區別,如何使用這兩種方式?3、介面和抽象類的關係?由這兩個問題開始深入的理解一下虛擬函式,純虛擬函式以及抽象類和介面之間的關係。 虛擬函式 百度定義:簡單地說,那
C/C++面試題:編寫類String的建構函式、解構函式和賦值函式。
考點:建構函式、解構函式和賦值函式的編寫方法出現頻率:☆☆☆☆☆已知類String的原型為: class String { public: String(const char *str = NULL);
C++第十週【任務2】定義一個名為CPerson的類,有以下私有成員:姓名、身份證號、性別和年齡,成員函式:建構函式、解構函式、輸出資訊的函式。
/* (程式頭部註釋開始) * 程式的版權和版本宣告部分 * Copyright (c) 2011, 煙臺大學計算機學院學生 * All rights reserved. * 檔名稱: C++第十週【任務2】 * 作
編寫類String的建構函式、解構函式和賦值函式
//普通建構函式 String::String(const char *str) { if(str==NULL) { m_data = new char[1]; // 得分點:對空字串自動申請存放結束
C++ 建構函式、預設建構函式、解構函式和物件初始化
#include <iostream> using namespace std; class Student{ private: int m_age; int m_grade; string m_sex
建構函式、解構函式和拷貝建構函式
一.建構函式 C++ 中類的建構函式與 java 很類似,其實對於面向物件程式設計來說,大傢伙都是一個思想,可能語法上有所不同而已。 class Student { public: // 建構函式 Student(){// 空引數建構函式
python進階5:外層函式、內層函式和閉包
在函式內部定義的函式和外部定義的函式是一樣的,只是他們無法被外部訪問,例如: def f(): print 'f()' def g(): print 'g()' return g #將g定義在函式f內部,防止其他程式碼呼叫g 但
SQL Server CLR全功略之三---CLR標量函式、表值函式和聚合函式(UDA)
本節主要介紹使用CLR建立標量函式,表值函式和聚合函式。 所謂標量函式指的就是此函式只返回一個值。表值函式返回值是一個表。聚合函式是在select語句中使用的,用來聚合一個結果集,類似於Sum()或是Count()等內建的函式,而且真正的自定義聚合函式目前只能用CLR來實現。