『壹』 非數值演算法的模擬退火演算法
模擬退火演算法來源於固體退火原理,將固體加溫至充分高,再讓其徐徐冷卻,加溫時,固體
內部粒子隨溫升變為無序狀,內能增大,而徐徐冷卻時粒子漸趨有序,在每個溫度都達到平
衡態,最後在常溫時達到基態,內能減為最小。根據Metropolis 准則,粒子在溫度T 時趨於
平衡的概率為e-ΔE/(kT),其中E 為溫度T 時的內能,ΔE 為其改變數,k 為Boltzmann 常
數。用固體退火模擬組合優化問題,將內能E 模擬為目標函數值f,溫度T 演化成控制參數
t,即得到解組合優化問題的模擬退火演算法:由初始解i 和控制參數初值t 開始,對當前解重
復「產生新解→計算目標函數差→接受或舍棄」的迭代,並逐步衰減t 值,演算法終止時的當
前解即為所得近似最優解,這是基於蒙特卡羅迭代求解法的一種啟發式隨機搜索過程。退火
過程由冷卻進度表(Cooling Schele)控制,包括控制參數的初值t 及其衰減因子Δt、每個t
值時的迭代次數L 和停止條件S。
1、模擬退火演算法可以分解為解空間、目標函數和初始解三部分 。 它為問題的所有可能(可行的或包括不可行的)解的集合,它限定了初始解選取和新解產
生時的范圍。對無約束的優化問題,任一可能解(possible solution)即為一可行解(feasible
solution),因此解空間就是所有可行解的集合;而在許多組合優化問題中,一個解除滿足目
標函數最優的要求外,還必須滿足一組約束(constraint),因此在解集中可能包含一些不可行
解(infeasible so1ution)。為此,可以限定解空間僅為所有可行解的集合,即在構造解時就考
慮到對解的約束;也可允許解空間包含不可行解,而在目標函數中加上所謂罰函數(penalty
function)以「懲罰」不可行解的出現。 它是對問題的優化目標的數學描述,通常表述為若干優化目標的一個和式。目標函數的
選取必須正確體現對問題的整體優化要求。例如,如上所述,當解空間包含不可行解時,目
標函數中應包含對不可行解的罰函數項,藉此將一個有約束的優化問題轉化為無約束的優化
問題。一般地,目標函數值不一定就是問題的優化目標值,但其對應關系應是顯明的。此外,
目標函數式應當是易於計算的,這將有利於在優化過程中簡化目標函數差的計算以提高演算法
的效率。 是演算法迭代的起點,試驗表明,模擬退火演算法是魯棒的(Robust),即最終解的求得幾乎
不依賴於初始解的選取。
2、基本思想:
(1) 初始化:初始溫度T(充分大),初始解狀態S(是演算法迭代的起點), 每個T 值的迭
代次數L
(2) 對k=1,,L 做第(3)至第6 步:
(3) 產生新解S′
(4) 計算增量Δt′=C(S′)-C(S),其中C(S)為評價函數
(5) 若Δt′<0 則接受S′作為新的當前解,否則以概率exp(-Δt′/T)接受S′作為新的
當前解.
(6) 如果滿足終止條件則輸出當前解作為最優解,結束程序。
終止條件通常取為連續若干個新解都沒有被接受時終止演算法。
(7) T 逐漸減少,且T->0,然後轉第2 步。
二、遺傳演算法
遺傳演算法的基本思想是基於Darwin 進化論和Mendel 的遺傳學說的。
Darwin 進化論最重要的是適者生存原理。它認為每一物種在發展中越來越適應環境。物種
每個個體的基本特徵由後代所繼承,但後代又會產生一些異於父代的新變化。在環境變化時,
只有那些能適應環境的個體特徵方能保留下來。
Mendel 遺傳學說最重要的是基因遺傳原理。它認為遺傳以密碼方式存在細胞中,並以基因
形式包含在染色體內。每個基因有特殊的位置並控制某種特殊性質;所以,每個基因產生的
個體對環境具有某種適應性。基因突變和基因雜交可產生更適應於環境的後代。經過存優去
劣的自然淘汰,適應性高的基因結構得以保存下來。
遺傳演算法簡稱GA(Genetic Algorithm),在本質上是一種不依賴具體問題的直接搜索方法。
1、遺傳演算法的原理
遺傳演算法GA 把問題的解表示成「染色體」,在演算法中也即是以二進制編碼的串。並且,在
執行遺傳演算法之前,給出一群「染色體」,也即是假設解。然後,把這些假設解置於問題的
「環境」中,並按適者生存的原則,從中選擇出較適應環境的「染色體」進行復制,再通過
交叉,變異過程產生更適應環境的新一代「染色體」群。這樣,一代一代地進化,最後就會
收斂到最適應環境的一個「染色體」上,它就是問題的最優解。
長度為L 的n 個二進制串bi(i=1,2,,n)組成了遺傳演算法的初解群,也稱為初始群體。
在每個串中,每個二進制位就是個體染色體的基因。根據進化術語,對群體執行的操作有三
種:
(1).選擇(Selection)
這是從群體中選擇出較適應環境的個體。這些選中的個體用於繁殖下一代。故有時也稱這一
操作為再生(Reproction)。由於在選擇用於繁殖下一代的個體時,是根據個體對環境的適
應度而決定其繁殖量的,故而有時也稱為非均勻再生(differential reproction)。
(2).交叉(Crossover)
這是在選中用於繁殖下一代的個體中,對兩個不同的個體的相同位置的基因進行交換,從而
產生新的個體。
(3).變異(Mutation)
這是在選中的個體中,對個體中的某些基因執行異向轉化。在串bi 中,如果某位基因為1,
產生變異時就是把它變成0;反亦反之。
2、遺傳演算法的特點
(1).遺傳演算法從問題解的中集開始嫂索,而不是從單個解開始。
這是遺傳演算法與傳統優化演算法的極大區別。傳統優化演算法是從單個初始值迭代求最優解的;
容易誤入局部最優解。遺傳演算法從串集開始搜索,覆蓋面大,利於全局擇優。
(2).遺傳演算法求解時使用特定問題的信息極少,容易形成通用演算法程序。
由於遺傳演算法使用適應值這一信息進行搜索,並不需要問題導數等與問題直接相關的信息。
遺傳演算法只需適應值和串編碼等通用信息,故幾乎可處理任何問題。
(3).遺傳演算法有極強的容錯能力
遺傳演算法的初始串集本身就帶有大量與最優解甚遠的信息;通過選擇、交叉、變異操作能迅
速排除與最優解相差極大的串;這是一個強烈的濾波過程;並且是一個並行濾波機制。故而,
遺傳演算法有很高的容錯能力。
(4).遺傳演算法中的選擇、交叉和變異都是隨機操作,而不是確定的精確規則。
這說明遺傳演算法是採用隨機方法進行最優解搜索,選擇體現了向最優解迫近,交叉體現了最
優解的產生,變異體現了全局最優解的覆蓋。
三、神經網路演算法
「人工神經網路」(ARTIFICIAL NEURAL NETWORK,簡稱A.N.N.)是在對人腦組織結構和
運行機智的認識理解基礎之上模擬其結構和智能行為的一種工程系統。早在本世紀40 年代
初期,心理學家McCulloch、數學家Pitts 就提出了人工神經網路的第一個數學模型,從此開
創了神經科學理論的研究時代。其後,F.Rosenblatt、Widrow 和Hopf、J.J.Hopfield 等學者又
先後提出了感知模型,使得人工神經網路技術得以蓬勃發展。
神經系統的基本構造是神經元(神經細胞),它是處理人體內各部分之間相互信息傳遞的基本
單元。據神經生物學家研究的結果表明,人的一個大腦一般有10 10 ~10 11
個神經元。每個神經元都由一個細胞體,一個連接其他神經元的軸突和一些向外伸出的其它
較短分支——樹突組成。軸突的功能是將本神經元的輸出信號(興奮)傳遞給別的神經元。其
末端的許多神經末梢使得興奮可以同時傳送給多個神經元。樹突的功能是接受來自其它神經
元的興奮。神經元細胞體將接受到的所有信號進行簡單地處理(如:加權求和,即對所有的
輸入信號都加以考慮且對每個信號的重視程度——體現在權值上——有所不同)後由軸突輸
出。神經元的樹突與另外的神經元的神經末梢相連的部分稱為突觸。
1、神經網路的工作原理
人工神經網路首先要以一定的學習准則進行學習,然後才能工作。現以人工神經網路對手寫
「A」、「B」兩個字母的識別為例進行說明,規定當「A」輸入網路時,應該輸出「1」,而
當輸入為「B」時,輸出為「0」。所以網路學習的准則應該是:如果網路作出錯誤的的判決,
則通過網路的學習,應使得網路減少下次犯同樣錯誤的可能性。首先,給網路的各連接權值
賦予(0,1)區間內的隨機值,將「A」所對應的圖象模式輸入給網路,網路將輸入模式加權
求和、與門限比較、再進行非線性運算,得到網路的輸出。在此情況下,網路輸出為「1」
和「0」的概率各為50%,也就是說是完全隨機的。這時如果輸出為「1」(結果正確),則使
連接權值增大,以便使網路再次遇到「A」模式輸入時,仍然能作出正確的判斷。如果輸出
為「0」(即結果錯誤),則把網路連接權值朝著減小綜合輸入加權值的方向調整,其目的在
於使網路下次再遇到「A」模式輸入時,減小犯同樣錯誤的可能性。如此操作調整,當給網
絡輪番輸入若干個手寫字母「A」、「B」後,經過網路按以上學習方法進行若干次學習後,
網路判斷的正確率將大大提高。這說明網路對這兩個模式的學習已經獲得了成功,它已將這
兩個模式分布地記憶在網路的各個連接權值上。當網路再次遇到其中任何一個模式時,能夠
作出迅速、准確的判斷和識別。一般說來,網路中所含的神經元個數越多,則它能記憶、識
別的模式也就越多。
2、人工神經網路的特點
人工神經網路是由大量的神經元廣泛互連而成的系統,它的這一結構特點決定著人工神經網
絡具有高速信息處理的能力。人腦的每個神經元大約有10 3~10 4 個樹突及相應的突
觸,一個人的大腦總計約形成10 14 ~10 15 個突觸。用神經網路的術語來說,
即是人腦具有10 14 ~10 15 個互相連接的存儲潛力。雖然每個神經元的運算
功能十分簡單,且信號傳輸速率也較低(大約100 次/秒),但由於各神經元之間的極度並行互
連功能,最終使得一個普通人的大腦在約1 秒內就能完成現行計算機至少需要數10 億次處
理步驟才能完成的任務。
人工神經網路的知識存儲容量很大。在神經網路中,知識與信息的存儲表現為神經元之間分
布式的物理聯系。它分散地表示和存儲於整個網路內的各神經元及其連線上。每個神經元及
其連線只表示一部分信息,而不是一個完整具體概念。只有通過各神經元的分布式綜合效果
才能表達出特定的概念和知識。
由於人工神經網路中神經元個數眾多以及整個網路存儲信息容量的巨大,使得它具有很強的
不確定性信息處理能力。即使輸入信息不完全、不準確或模糊不清,神經網路仍然能夠聯想
思維存在於記憶中的事物的完整圖象。只要輸入的模式接近於訓練樣本,系統就能給出正確
的推理結論。
正是因為人工神經網路的結構特點和其信息存儲的分布式特點,使得它相對於其它的判斷識
別系統,如:專家系統等,具有另一個顯著的優點:健壯性。生物神經網路不會因為個別神
經元的損失而失去對原有模式的記憶。最有力的證明是,當一個人的大腦因意外事故受輕微
損傷之後,並不會失去原有事物的全部記憶。人工神經網路也有類似的情況。因某些原因,
無論是網路的硬體實現還是軟體實現中的某個或某些神經元失效,整個網路仍然能繼續工
作。
人工神經網路是一種非線性的處理單元。只有當神經元對所有的輸入信號的綜合處理結果超
過某一門限值後才輸出一個信號。因此神經網路是一種具有高度非線性的超大規模連續時間
動力學系統。它突破了傳統的以線性處理為基礎的數字電子計算機的局限,標志著人們智能
信息處理能力和模擬人腦智能行為能力的一大飛躍。
『貳』 常用的機器學習&數據挖掘知識(點)
常用的機器學習&數據挖掘知識(點)
Basis(基礎):MSE(Mean Square Error 均方誤差),
LMS(LeastMean Square 最小均方),
LSM(Least Square Methods 最小二乘法),
MLE(MaximumLikelihood Estimation最大似然估計),
QP(Quadratic Programming 二次規劃),
CP(Conditional Probability條件概率),
JP(Joint Probability 聯合概率),
MP(Marginal Probability邊緣概率),
Bayesian Formula(貝葉斯公式),
L1 /L2Regularization(L1/L2正則,
以及更多的,現在比較火的L2.5正則等),
GD(GradientDescent 梯度下降),
SGD(Stochastic Gradient Descent 隨機梯度下降),
Eigenvalue(特徵值),
Eigenvector(特徵向量),
QR-decomposition(QR分解),
Quantile (分位數),
Covariance(協方差矩陣)。
Common Distribution(常見分布):
Discrete Distribution(離散型分布):
BernoulliDistribution/Binomial(貝努利分布/二項分布),
Negative BinomialDistribution(負二項分布),
MultinomialDistribution(多項式分布),
Geometric Distribution(幾何分布),
HypergeometricDistribution(超幾何分布),
Poisson Distribution (泊松分布)。
Continuous Distribution (連續型分布):
UniformDistribution(均勻分布),
Normal Distribution /Guassian Distribution(正態分布/高斯分布),
ExponentialDistribution(指數分布),
Lognormal Distribution(對數正態分布),
GammaDistribution(Gamma分布),
Beta Distribution(Beta分布),
Dirichlet Distribution(狄利克雷分布),
Rayleigh Distribution(瑞利分布),
Cauchy Distribution(柯西分布),
Weibull Distribution (韋伯分布)。
Three Sampling Distribution(三大抽樣分布):
Chi-squareDistribution(卡方分布),
t-distribution(t-distribution),
F-distribution(F-分布)。
Data Pre-processing(數據預處理):
Missing Value Imputation(缺失值填充),
Discretization(離散化),Mapping(映射),
Normalization(歸一化/標准化)。
Sampling(采樣):
Simple Random Sampling(簡單隨機采樣),
OfflineSampling(離線等可能K采樣),
Online Sampling(在線等可能K采樣),
Ratio-based Sampling(等比例隨機采樣),
Acceptance-RejectionSampling(接受-拒絕采樣),
Importance Sampling(重要性采樣),
MCMC(MarkovChain Monte Carlo 馬爾科夫蒙特卡羅采樣演算法:Metropolis-Hasting& Gibbs)。
Clustering(聚類):
K-Means,
K-Mediods,
二分K-Means,
FK-Means,
Canopy,
Spectral-KMeans(譜聚類),
GMM-EM(混合高斯模型-期望最大化演算法解決),
K-Pototypes,CLARANS(基於劃分),
BIRCH(基於層次),
CURE(基於層次),
DBSCAN(基於密度),
CLIQUE(基於密度和基於網格)。
Classification&Regression(分類&回歸):
LR(Linear Regression 線性回歸),
LR(LogisticRegression邏輯回歸),
SR(Softmax Regression 多分類邏輯回歸),
GLM(GeneralizedLinear Model 廣義線性模型),
RR(Ridge Regression 嶺回歸/L2正則最小二乘回歸),
LASSO(Least Absolute Shrinkage andSelectionator Operator L1正則最小二乘回歸),
RF(隨機森林),
DT(DecisionTree決策樹),
GBDT(Gradient BoostingDecision Tree 梯度下降決策樹),
CART(ClassificationAnd Regression Tree 分類回歸樹),
KNN(K-Nearest Neighbor K近鄰),
SVM(Support VectorMachine),
KF(KernelFunction 核函數PolynomialKernel Function 多項式核函、
Guassian KernelFunction 高斯核函數/Radial BasisFunction RBF徑向基函數、
String KernelFunction 字元串核函數)、
NB(Naive Bayes 樸素貝葉斯),BN(Bayesian Network/Bayesian Belief Network/ Belief Network 貝葉斯網路/貝葉斯信度網路/信念網路),
LDA(Linear Discriminant Analysis/FisherLinear Discriminant 線性判別分析/Fisher線性判別),
EL(Ensemble Learning集成學習Boosting,Bagging,Stacking),
AdaBoost(Adaptive Boosting 自適應增強),
MEM(MaximumEntropy Model最大熵模型)。
Effectiveness Evaluation(分類效果評估):
Confusion Matrix(混淆矩陣),
Precision(精確度),Recall(召回率),
Accuracy(准確率),F-score(F得分),
ROC Curve(ROC曲線),AUC(AUC面積),
LiftCurve(Lift曲線) ,KS Curve(KS曲線)。
PGM(Probabilistic Graphical Models概率圖模型):
BN(Bayesian Network/Bayesian Belief Network/ BeliefNetwork 貝葉斯網路/貝葉斯信度網路/信念網路),
MC(Markov Chain 馬爾科夫鏈),
HMM(HiddenMarkov Model 馬爾科夫模型),
MEMM(Maximum Entropy Markov Model 最大熵馬爾科夫模型),
CRF(ConditionalRandom Field 條件隨機場),
MRF(MarkovRandom Field 馬爾科夫隨機場)。
NN(Neural Network神經網路):
ANN(Artificial Neural Network 人工神經網路),
BP(Error BackPropagation 誤差反向傳播)。
Deep Learning(深度學習):
Auto-encoder(自動編碼器),
SAE(Stacked Auto-encoders堆疊自動編碼器,
Sparse Auto-encoders稀疏自動編碼器、
Denoising Auto-encoders去噪自動編碼器、
Contractive Auto-encoders 收縮自動編碼器),
RBM(RestrictedBoltzmann Machine 受限玻爾茲曼機),
DBN(Deep Belief Network 深度信念網路),
CNN(ConvolutionalNeural Network 卷積神經網路),
Word2Vec(詞向量學習模型)。
DimensionalityRection(降維):
LDA LinearDiscriminant Analysis/Fisher Linear Discriminant 線性判別分析/Fisher線性判別,
PCA(Principal Component Analysis 主成分分析),
ICA(IndependentComponent Analysis 獨立成分分析),
SVD(Singular Value Decomposition 奇異值分解),
FA(FactorAnalysis 因子分析法)。
Text Mining(文本挖掘):
VSM(Vector Space Model向量空間模型),
Word2Vec(詞向量學習模型),
TF(Term Frequency詞頻),
TF-IDF(Term Frequency-Inverse DocumentFrequency 詞頻-逆向文檔頻率),
MI(MutualInformation 互信息),
ECE(Expected Cross Entropy 期望交叉熵),
QEMI(二次信息熵),
IG(InformationGain 信息增益),
IGR(Information Gain Ratio 信息增益率),
Gini(基尼系數),
x2 Statistic(x2統計量),
TEW(TextEvidence Weight文本證據權),
OR(Odds Ratio 優勢率),
N-Gram Model,
LSA(Latent Semantic Analysis 潛在語義分析),
PLSA(ProbabilisticLatent Semantic Analysis 基於概率的潛在語義分析),
LDA(Latent DirichletAllocation 潛在狄利克雷模型)。
Association Mining(關聯挖掘):
Apriori,
FP-growth(Frequency Pattern Tree Growth 頻繁模式樹生長演算法),
AprioriAll,
Spade。
Recommendation Engine(推薦引擎):
DBR(Demographic-based Recommendation 基於人口統計學的推薦),
CBR(Context-basedRecommendation 基於內容的推薦),
CF(Collaborative Filtering協同過濾),
UCF(User-basedCollaborative Filtering Recommendation 基於用戶的協同過濾推薦),
ICF(Item-basedCollaborative Filtering Recommendation 基於項目的協同過濾推薦)。
Similarity Measure&Distance Measure(相似性與距離度量):
Euclidean Distance(歐式距離),
ManhattanDistance(曼哈頓距離),
Chebyshev Distance(切比雪夫距離),
MinkowskiDistance(閔可夫斯基距離),
Standardized Euclidean Distance(標准化歐氏距離),
MahalanobisDistance(馬氏距離),
Cos(Cosine 餘弦),
HammingDistance/Edit Distance(漢明距離/編輯距離),
JaccardDistance(傑卡德距離),
Correlation Coefficient Distance(相關系數距離),
InformationEntropy(信息熵),
KL(Kullback-Leibler Divergence KL散度/Relative Entropy 相對熵)。
Optimization(最優化):
Non-constrainedOptimization(無約束優化):
Cyclic VariableMethods(變數輪換法),
Pattern Search Methods(模式搜索法),
VariableSimplex Methods(可變單純形法),
Gradient Descent Methods(梯度下降法),
Newton Methods(牛頓法),
Quasi-NewtonMethods(擬牛頓法),
Conjugate Gradient Methods(共軛梯度法)。
ConstrainedOptimization(有約束優化):
Approximation Programming Methods(近似規劃法),
FeasibleDirection Methods(可行方向法),
Penalty Function Methods(罰函數法),
Multiplier Methods(乘子法)。
Heuristic Algorithm(啟發式演算法),
SA(SimulatedAnnealing,
模擬退火演算法),
GA(genetic algorithm遺傳演算法)。
Feature Selection(特徵選擇演算法):
Mutual Information(互信息),
DocumentFrequence(文檔頻率),
Information Gain(信息增益),
Chi-squared Test(卡方檢驗),
Gini(基尼系數)。
Outlier Detection(異常點檢測演算法):
Statistic-based(基於統計),
Distance-based(基於距離),
Density-based(基於密度),
Clustering-based(基於聚類)。
Learning to Rank(基於學習的排序):
Pointwise:McRank;
Pairwise:RankingSVM,RankNet,Frank,RankBoost;
Listwise:AdaRank,SoftRank,LamdaMART。
Tool(工具):
MPI,Hadoop生態圈,Spark,BSP,Weka,Mahout,Scikit-learn,PyBrain…
以及一些具體的業務場景與case等。
『叄』 《心中有數:生活中的數學思維》,數學,和我有什麼關系
我曾經學過數學很多年,代數、幾何、方程等等,背過林林總總的公式早已完完整整地還給恩師,如今剩下能用的只有加減乘除了。那麼,作為基礎學科的數學到底價值何在?為了尋找答案或者一絲與答案相關的線索,我將目光轉向書籍,撇開那些基礎理論和深奧的數學研究書籍,尋找與我們普通人生活相關的解釋。於是,《心中有數》這本書映入眼簾。這是一本新書,出版於2022年4月份,作者和我們同處一個時代,同時代的人們也更能相互理解。那麼,讓我們一起來看看這位計算機專家對於數學有著怎樣的理解和解釋。
一、作者是何方神聖?
劉雪峰,男,博士,副教授,博士生導師。2014年擔任華中科技大學副教授,現任北京航空航天大學計算機學院副教授。目前主要研究方向:
1)人工智慧的分布式演算法:重點研究如何實現多家醫療機構共同訓練醫療影像的深度學習模型(聯邦學習在醫療領域中的應用)。
2)融合先驗知識的深度學習模型:重點研究如何將醫生的領域知識,同以數據驅動為核心的深度學習模型融合,解決醫療數據少的問題。
3)智能感知技術:將移動領域的信號處理技術與深度學習結合,實現無處不在的智能。包括定位技術、人體狀態感知等。
4)圖像識別與自然語言處理:多模態的信息(包括圖像、聲音、自然語言)的融合模型,在實際的應用(包括輿情分析、推薦、情感預測、腦電信號處理、姿態識別)等發揮作用。
以上介紹專有名詞頗多,對於外行人理解起來有一定難度,不過可以大致了解到一些確切信息,那就是作者對人工智慧計算機有著深入的研究。提到計算機必須要提到網路,提到網路必然聯想到網民,如今我們的生活已然被互聯網包圍,被各種演算法包圍,中午才和同事談論一件事,下午打開手機就被推送類似的小視頻,讓我一度以為自己被智能手機監聽了,聽說,這是計算機演算法。
二、數學?和我有什麼關系
在閱讀本書之前,你是否和我有著同樣的疑問,數學和我有什麼關系?除了購物計算價錢、存錢貸款計算利息等,數學和我們普通人好像沒什麼關系。又或者你的數學在別處還發揮著作用。那麼數學,到底和我有什麼關系呢?
三、這本書分為幾個部分?
這本書一共19個章節,主要分為三個部分,前8章為思維篇,主要講數學對思維的影響,提醒我們用理性的思維去看待世界;中間8節為方法篇,主要介紹解決難題的策略和方法;最後3章為學習篇,主要是對如何學習和表達建議。
在思維篇,作者從數學的角度出發,告訴我們可以用數學的思維去看待世界。在這一部分,有五個點讓我產生共鳴、留下深刻印象,想與大家分享。一是概率世界觀。「很多事情的最終結果是我們不能保證的,但是,這個結果發生的概率是我們可以靠努力改變的」。那我們能做什麼呢?「平靜接收現實,努力改變概率」。二是「預測」比「解釋」重要。作何舉出了關於穀神星預測的事例,「解釋」價值不高又很容易,而預測很珍貴,但又真的很難。三是多樣性紅利。「全由朋友組成的團隊在討論問題時非常愉快,這些人的視角、觀點很接近,因此大部分時間都在互相認同。但是,他們最後綜合各方意見得出的很多結論是錯誤的。而加入了陌生人的團隊則不同。陌生人和組中其他人所處的環境不同,有著不同的感知視角。因此小組的集體討論中充滿了爭論和分歧。然而,這個團隊最後對外公布的結論往往是正確的。這就是多樣性帶來的紅利」。就像數學中的方程式,一個角度是一個結果,多角度就會得到方程組,結合多角度的觀察結果,就能找到內在本質。四是小確幸和大幸福。你會選擇哪一個?作者舉出買市中心的小房子和通勤時間長的郊外大房子的例子,最後通過一長串我看不懂的數學公式告訴我們,頻繁的小確幸,能比偶爾的大幸福帶來更多幸福感。五是有關「利」和「弊」。又是一大串數學公式,如果你恰好懂,讀起來應該十分便利,但對我這個外行來說,雖然看不懂公式,但通過作者這一系列的公式證明動作至少明白了這是可以被公式所推演,是科學的,科學證明,「沒有利弊,只有特點」。
方法篇由於公式過多,大部分看得比較囫圇吞棗,最讓我印象深刻的只有兩點。一是設計者可以進行驗證式學習,並根據使用者的回饋進一步了解使用場景,繼續開發此產品。如果你開公司搞設計做產品,這一點會很受用。那就是「開發科技含量較高的產品,不能想著一步到位。最開始,一定要把一個不完美,但可用的產品做出來,然後把這個產品拿到現場去用,工程師在使用後會告訴我們在設計之初沒想到的問題,用戶會向我們提出更多的要求,我們就在這些基礎上一步一步改進」。二是模擬退火演算法。「年輕時多嘗隨機性嘗試,但隨機性應該隨著年齡的增長慢慢降低。在年齡漸長,知道自己最適合什麼後,你就要控制隨機性,在自己最適合的地方深耕,不輕易切換賽道」。
學習篇雖然只有三個章節,但卻讓我覺得特別受用。第一點,怎樣讀書看報才能進步最快?重點是預測和調整,「他會主動預測,看到一個問題時,不是著急看其他人怎麼解決,而是自己先提出一個方案。把自己的方案和論文中的方案進行對比,從差距中學習,從中提高自己」。「但不管是哪類讀者,一個好的讀者在閱讀時都應該選擇監督學習,主動預測,並且從差距中學習。好的讀者可以隨時根據預測的正確與否調整速度,預測正確的就快速掃過,錯誤的慢慢體會,這才是主動學習」。第二點,大學學習的是底層能力和「學習方法論」。作者從智能機器學習模式啟發我們,「多任務學習的目的是提高模型所有任務上的平均性能」。以及學習的遷移,「學生應該把重心放在如何將當前在學校中學習的課本知識遷移到將來的工作中」。「應試圖通過學習每門課,充分鍛煉包括理解能力在內的這些底層能力」。第三點,由主到次的增量式表達。「我先把結論寫出來。先說重要的信息,再逐步添加細節」。
四、數學,和我還是有點關系
以上有關人生、幸福、學習方法等思考,作者均從數學角度出發,有相應的數學公式予以論證,讀完這本書,我忽然發現,數學和我們普通人,還是有那麼點關系,本書幫助我們從科學的角度去重新審視生活和學習。雖然已經不學數學很多年了,在本書閱讀過程中不斷跳過看不懂的公式,但本書仍然為我這個數學門外漢打開了一扇觀察世界的新視角,讀完受益頗深。如果你也覺得有趣,不妨也去讀一讀,期待我們可以交流不同感受。
『肆』 一點優化論 - 沒覆蓋運籌學的內容
因為教書,所以,在講解相關的概念和技術的時候,總是習慣首先 從大處著眼 ,然後 在小處入手 。所謂 從大處著眼 ,就是梳理下概念和技術的源流和歷史; 在小處入手 就是總是使用具體的例子來講解。
前面 也談AI簡史 簡單梳理了AI(作為人類追尋智慧的一部分)的Big Picture(還真沒找到合適的描述 - 大圖景?怪怪的);此文簡要梳理下AI的核心技術 - 優化( 注意: 不僅僅是 優化論 )。如果你不了解點優化的知識,還真夠嗆能深入AI,尤其是機器學習(Machine Learning),以及現在的火熱的深度學習(Deep Learning)。
要強調的是:真正想要精通機器學習,意味著你必須要了解優化!
還有:此處涉及到的數學知識,僅作陳述,不再給出證明!如對證明感興趣,請自行搜索。
這個...還真不好說,因為涉及的太多了。簡單地說, 所謂優化,寬泛地說,就是找到需要解決的問題的最佳方案 。
問題有很多:大到 宇宙到底是如何形成和演化的? ,小到 某種茶用水的最佳溫度? 。在嘗試解決這類問題的過程中,會提出很多的方案。優化,就是找到那個最佳的方案。
而與AI和ML的學習緊密相關的優化,則是依賴於數學手段的處理方式,尤其是依賴於數學分析的優化(突出的代表就是 凸優化 ),也是此文所關注的。
按照上面對優化的理解,那麼,優化的歷史就很久了!大致分為三個時期(個人觀點):數學分析出現之前,數學分析和變分法時期,以及非線性時期。
定理的陳述很簡單,"邊長固定,在長方形中,正方形(正方形是長方形的特例)面積最大"。但是,那是在公元前300年!你試試?
這一時期的優化,很多時候是依賴個人的靈性,沒有一套比較好的數學套路來 完美 求解那些問題。這得一直到 數學分析 這一強大的工具出現後才得以突破。
數學分析的歷史就不贅述了 - 網上有很多的趣聞和軼事(關於牛頓和萊布尼茲,關於歐拉的工作等)。數學分析的重要性毋庸置疑,它也大大促進了優化問題的求解(如果可以使用數學分析的方法求解的話)。在這里不得不提的是所謂的 變分法(Calculus of Variations) 。感興趣的話可以自己找找看 ,在此只是給出下面的示例,以助於讀者直觀感受下。
數學分析的技術用於優化,其思想還是很簡單的(說過:證明其正確性才是挑戰!),主要的就是 極值定理 :通過函數的一階和二階導數的性質,可以確定不動點(Stationary Point)是局部極大還是極小。
這一現象在多元變數函數上也有類似的規律,留到後面 (凸)優化的框架 再做介紹。
此外,當函數是凸函數的時候,極值點(不動點)也就是該函數的全局極值了。也留到後面 (凸)優化的框架 再做介紹。
說起來,簡單點的優化問題解決的還是不錯的,其集大成者就是所謂的 凸優化 。不過,問題有時候總是比方法多!現實中還有許多的問題是在凸優化覆蓋的范疇之外的。
上圖是網上找到的了關於優化論覆蓋的問題范疇:整個矩形對應所有的優化問題,其中的CP就是 Convex Programming (凸規劃問題。在數學領域往往習慣成為Convex Optimization),PP對應多項式規劃(Polynomial Programming)問題(要注意,PP中有些問題會是非線性的),此外就是非線性問題了。而且非線性問題更多。反過來說,非線性優化問題才是 很難的 問題。
不過,難問題畢竟是難,按照陸吾生先生的說法,PP現在得到了很大的關注,就是因為它覆蓋了部分的非線性問題。相關的研究就想從這類非線性問題的求解中找找規律,以推進對其他非線性問題的求解。
另一方面,大規模的全局優化問題,也得益於計算機的發展有了有趣的推進,1980年代提出了Genetic Algorithm [遺傳演算法],Simulated Annealing Algorithm[模擬退火演算法],Ant Algorithm [蟻群演算法]等方法。
在前面知道,對於一元函數而言,極值定理既能夠幫助我們求解極值點(一階導數為零的點,也就是局部最優點。僅當函數是凸函數時,才是全局最優點),在極值點的二階導數能夠進一步確定極值點的性質(是極大還是極小)。
這種現象在多元變數函數中也存在,分別對應 一階偏導數 和 Hessian 矩陣 (對應一元函數的二階導數)。下面只是給出個例子體會下,更深入的理論請自行查找。
其中, f(x) 是目標函數; g(x) 是不等約束條件; h(x) 是等值約束條件; x 是多元變數的向量形式。
** 注意:這種描述也同樣適用於 被CP覆蓋的其他形式的優化問題。
** 強調 :後面描述的求解套路並不適用線性規劃(Linear Programming)。為什麼?因為線性規劃的一階導數是常數 :slightly_smiling_face:
無約束問題,也就是只有一個目標函數,而沒有任何約束條件。這類問題的求解,就是求解一階和二階的套路:一階定極值,二階定性質。
也就是只含有等值約束的問題。這類問題的求解就需要所謂的拉格朗日(Lagrange Multiplier)運算元的幫助,藉助它能將此類問題的求解轉化為無約束問題的求解。
在構造了拉格朗日函數後,分別對兩個變數求一階偏導數,然後再加上等式條件,我們就有三個方程和三個變數(新引入的ν變數就是所謂的拉格朗日乘子),也就可以求的三個變數的值。
在得到三個變數的值後,進一步求解蘭格朗日函數在兩個點處的二階偏導數(也就是黑森矩陣 - Hessian Matrix),進而可以知道黑森矩陣的性質 - 正定,負定,還是不定。由於此優化問題是求解目標函數的最小,那麼,對應正定黑森矩陣的點也就是最小值了。
一定要記住 :KKT 是求解不等約束問題的必要條件!
注意:此處僅僅簡單地給出概貌和樣例,不做數學證明!證明確實很難的!
有了前面的理論,想要手工實際得到結果仍然是很費勁的,好在有計算機。不過,下面提到的各種計算機演算法(數值方法)主要是針對前兩個層次的求解,不等約束問題的求解,因為依賴具體的情況(前面例子里的很多Cases),所以很難有統一的求解演算法。
梯度下降法(Gradient descent),顧名思義,就是自變數沿著梯度向量的反方向進行移動,因為梯度的方向是上升的方向。
最速下降法(Steepest descent)是梯度下降法的一種更具體實現形式,其理念為在每次迭代中選擇合適的步長,使得目標函數值能夠得到最大程度的減少。
對於機器學習中的分類問題,都需要基於數據來訓練所選模型的參數(不管是著名的支持向量機,還是神經網路的參數訓練 - 從簡單的感知機到現在火熱的深度學習)。
假設訓練集中含有 N 個數據樣本,對上面的的 n 取不同值(即一次性計算 loss 的樣本個數取不同值),實際計算時會有不同的影響。如果 n=1,這就是 隨機梯度下降法(Stochastic Gradient Descent);如果 1<n<N,這就是 小批量梯度下降法(mini-batch gradient descent。batch size 一般不會很大);如果 n=N,這就是(批量)梯度下降法([Batch] gradient descent)。
在確定搜索方向時,梯度下降和最速下降只用到了目標函數的一階導數(梯度),而牛頓法(Newton's method)用到了二階(偏)導數。
其他的求解方法還有很多,比如共軛梯度法(Conjugate Gradient Method), 擬牛頓法(Quasi Newton)等,請自行搜索。
前面提到了機器學習中的梯度下降法,有時候為了使得所得到的的參數滿足某些預設的要求,會人為引入所謂的正則項。比較有名的是LASSO, 好的Ridge 等。
在優化研究領域,有兩個著名的國際獎項, George B. Dantzig Prize 和 John von Neumann Theory Prize 。
『伍』 模擬退火演算法的簡介
模擬退火演算法(Simulated Annealing,SA)最早的思想是由N. Metropolis 等人於1953年提出。1983 年,S. Kirkpatrick 等成功地將退火思想引入到組合優化領域。它是基於Monte-Carlo迭代求解策略的一種隨機尋優演算法,其出發點是基於物理中固體物質的退火過程與一般組合優化問題之間的相似性。模擬退火演算法從某一較高初溫出發,伴隨溫度參數的不斷下降,結合概率突跳特性在解空間中隨機尋找目標函數的全局最優解,即在局部最優解能概率性地跳出並最終趨於全局最優。模擬退火演算法是一種通用的優化演算法,理論上演算法具有概率的全局優化性能,目前已在工程中得到了廣泛應用,諸如VLSI、生產調度、控制工程、機器學習、神經網路、信號處理等領域。
模擬退火演算法是通過賦予搜索過程一種時變且最終趨於零的概率突跳性,從而可有效避免陷入局部極小並最終趨於全局最優的串列結構的優化演算法。
『陸』 模擬退火原理介紹
在優化問題中,我們希望找到一個最優解,但實際上這是難以達到的。尤其是當問題較為復雜,求解空間維度較高時,我們需要在巨大的求解空間中搜索所有的可行解,並確定最優解。這樣做計算量十分巨大,幾乎無法在有限的計算時間和計算資源下完成。在實際問題中,我們並不需要精確的最優解,只需要一個近似最優解即可,這個近似最優解與完美的最優解應該足夠接近。
模擬退火(Simulated Annealing, SA)演算法是對熱力學中退火過程的模仿。將金屬加熱到高溫,此時金屬內部分子熱運動非常劇烈,內部的分子結構會出現很大變化;之後讓它緩慢降低溫度,隨著溫度的降低,分子熱運動的劇烈程度逐漸減弱,內部分子結構變化較小,逐漸趨於穩定。在尋找問題的最優解時,我們可以先給定一個初始解。此時溫度較高,初始解有很大的概率發生變化,產生一個新的解;隨著溫度的降低,解發生變化的概率逐漸減小。假定我們需要求解一個函數f(x)的最小值,那麼模擬退火演算法的過程描述如下:
產生新解的方式很多,以二進制編碼為例,假如一個解為01001101,可以隨機選取一位進行取反。假如選中了第3位,則第3位按位取反,新解為01101101。這個過程有點類似於遺傳演算法中的基因突變。上述演算法描述中每個溫度值只產生了一次新解,實際問題中可以產生多次。
演算法的關鍵在於Metropolis准則。如果新解的函數值較小,自然要把新解作為當前解;如果新解函數值較大,則它仍有一定概率被選作當前解。這個概率與df有關,df越大,說明新解越差,它被選作當前解的概率也越小;此外,這個概率還和當前溫度有關,當前溫度越高,概率越大(類似於分子熱運動越劇烈)。
參考資料
[1] Lee Jacobson, Simulated Annealing for beginners, http://www.theprojectspot.com/tutorial-post/simulated-annealing-algorithm-for-beginners/6
『柒』 現在模擬退火演算法、粒子群優化演算法、遺傳演算法和蟻群優化演算法現在用的還多嗎
我是人工智慧的小白,不能告訴你這幾個演算法是否是人工智慧,不過碰巧多年前學習優化演算法時,接觸過這些演算法。在這里分享幾個關於演算法的故事吧。
貨郎擔問題
有個快遞小哥要跑遍全城送貨,您打算幫他規劃一條最短的路線。該怎麼做呢,最直接的辦法是窮舉法。羅列出所有可能的線路,計算出每條線路的距離,尋求最短的路徑。看起來很簡單吧。可是在實際的路網上,路線組合是非常多的。如果有15個目的地,組合的數量至少是15的階乘。更何況還要考慮路況,收費免費,時間段等各種條件的組合,這樣的計算量恐怕是量子計算機也不能在可接受的時間里完成。這象是對條件不足多元方程組求解,要從無窮多的解中找出最接近期望值的解。於是,人們想出了許多快速逼近最優解的辦法。
螞蟻演算法
螞蟻出來覓食時,先是向四面八方出動,發現食物的螞蟻會掉頭回來通知其它的螞蟻。接到通知的螞蟻就會向食物的方向移動。螞蟻移動時會在路線上留下氣味。這樣在通向食物的路線上氣味就越來越濃,後面的螞蟻不用直接接到信息,只要追著最濃的氣味就可以找到食物。人們受到這個現象的啟發,設立出來先按隨機條件計算,在小范圍內找到局部最優解之後,就為這些條件加分。一定時間後就圍繞著分數高的條件計算,不斷反復後得到的解被當作近似最優解。這就是螞蟻演算法的原理。
神經網路
和螞蟻演算法類似,人的記憶是通過神經元的突出建立起聯系實現的。類似的刺激會使聯系增強。達到一定刺激量之後,就可以形成長久的記憶。模仿這一過程,人們把各種約束條件當作神經元,隨機選取路線,輸入各種條件,當路徑傾向於縮短時,就按照權重給各條件加分,反之就給條件減分,然後,根據分數,以最有利於優化的條件為主重新選擇路線,反復該過程直到達到邊界條件時,就認為得到了近似最優解。遺傳演算法,模擬退火演算法,也都是用一定的方法,縮小計算范圍,通過求局部最優解逼近最優解的。就不啰嗦了。
人工智慧和優化演算法
優化演算法實際上是從早期人工智慧的研究發展起來的,從這個意義上說,這些演算法也可以說是人工智慧吧。
『捌』 人工神經網路綜述
文章主要分為:
一、人工神經網路的概念;
二、人工神經網路的發展歷史;
三、人工神經網路的特點;
四、人工神經網路的結構。
。。
人工神經網路(Artificial Neural Network,ANN)簡稱神經網路(NN),是基於生物學中神經網路的基本原理,在理解和抽象了人腦結構和外界刺激響應機制後,以網路拓撲知識為理論基礎,模擬人腦的神經系統對復雜信息的處理機制的一種數學模型。該模型以並行分布的處理能力、高容錯性、智能化和自學習等能力為特徵,將信息的加工和存儲結合在一起,以其獨特的知識表示方式和智能化的自適應學習能力,引起各學科領域的關注。它實際上是一個有大量簡單元件相互連接而成的復雜網路,具有高度的非線性,能夠進行復雜的邏輯操作和非線性關系實現的系統。
神經網路是一種運算模型,由大量的節點(或稱神經元)之間相互聯接構成。每個節點代表一種特定的輸出函數,稱為激活函數(activation function)。每兩個節點間的連接都代表一個對於通過該連接信號的加權值,稱之為權重(weight),神經網路就是通過這種方式來模擬人類的記憶。網路的輸出則取決於網路的結構、網路的連接方式、權重和激活函數。而網路自身通常都是對自然界某種演算法或者函數的逼近,也可能是對一種邏輯策略的表達。神經網路的構築理念是受到生物的神經網路運作啟發而產生的。人工神經網路則是把對生物神經網路的認識與數學統計模型相結合,藉助數學統計工具來實現。另一方面在人工智慧學的人工感知領域,我們通過數學統計學的方法,使神經網路能夠具備類似於人的決定能力和簡單的判斷能力,這種方法是對傳統邏輯學演算的進一步延伸。
人工神經網路中,神經元處理單元可表示不同的對象,例如特徵、字母、概念,或者一些有意義的抽象模式。網路中處理單元的類型分為三類:輸入單元、輸出單元和隱單元。輸入單元接受外部世界的信號與數據;輸出單元實現系統處理結果的輸出;隱單元是處在輸入和輸出單元之間,不能由系統外部觀察的單元。神經元間的連接權值反映了單元間的連接強度,信息的表示和處理體現在網路處理單元的連接關系中。人工神經網路是一種非程序化、適應性、大腦風格的信息處理,其本質是通過網路的變換和動力學行為得到一種並行分布式的信息處理功能,並在不同程度和層次上模仿人腦神經系統的信息處理功能。
神經網路,是一種應用類似於大腦神經突觸連接結構進行信息處理的數學模型,它是在人類對自身大腦組織結合和思維機制的認識理解基礎之上模擬出來的,它是根植於神經科學、數學、思維科學、人工智慧、統計學、物理學、計算機科學以及工程科學的一門技術。
在介紹神經網路的發展歷史之前,首先介紹一下神經網路的概念。神經網路主要是指一種仿造人腦設計的簡化的計算模型,這種模型中包含了大量的用於計算的神經元,這些神經元之間會通過一些帶有權重的連邊以一種層次化的方式組織在一起。每一層的神經元之間可以進行大規模的並行計算,層與層之間進行消息的傳遞。
下圖展示了整個神經網路的發展歷程:
神經網路的發展有悠久的歷史。其發展過程大致可以概括為如下4個階段。
(1)、M-P神經網路模型:20世紀40年代,人們就開始了對神經網路的研究。1943 年,美國心理學家麥克洛奇(Mcculloch)和數學家皮茲(Pitts)提出了M-P模型,此模型比較簡單,但是意義重大。在模型中,通過把神經元看作個功能邏輯器件來實現演算法,從此開創了神經網路模型的理論研究。
(2)、Hebb規則:1949 年,心理學家赫布(Hebb)出版了《The Organization of Behavior》(行為組織學),他在書中提出了突觸連接強度可變的假設。這個假設認為學習過程最終發生在神經元之間的突觸部位,突觸的連接強度隨之突觸前後神經元的活動而變化。這一假設發展成為後來神經網路中非常著名的Hebb規則。這一法則告訴人們,神經元之間突觸的聯系強度是可變的,這種可變性是學習和記憶的基礎。Hebb法則為構造有學習功能的神經網路模型奠定了基礎。
(3)、感知器模型:1957 年,羅森勃拉特(Rosenblatt)以M-P 模型為基礎,提出了感知器(Perceptron)模型。感知器模型具有現代神經網路的基本原則,並且它的結構非常符合神經生理學。這是一個具有連續可調權值矢量的MP神經網路模型,經過訓練可以達到對一定的輸入矢量模式進行分類和識別的目的,它雖然比較簡單,卻是第一個真正意義上的神經網路。Rosenblatt 證明了兩層感知器能夠對輸入進行分類,他還提出了帶隱層處理元件的三層感知器這一重要的研究方向。Rosenblatt 的神經網路模型包含了一些現代神經計算機的基本原理,從而形成神經網路方法和技術的重大突破。
(4)、ADALINE網路模型: 1959年,美國著名工程師威德羅(B.Widrow)和霍夫(M.Hoff)等人提出了自適應線性元件(Adaptive linear element,簡稱Adaline)和Widrow-Hoff學習規則(又稱最小均方差演算法或稱δ規則)的神經網路訓練方法,並將其應用於實際工程,成為第一個用於解決實際問題的人工神經網路,促進了神經網路的研究應用和發展。ADALINE網路模型是一種連續取值的自適應線性神經元網路模型,可以用於自適應系統。
人工智慧的創始人之一Minsky和Papert對以感知器為代表的網路系統的功能及局限性從數學上做了深入研究,於1969年發表了轟動一時《Perceptrons》一書,指出簡單的線性感知器的功能是有限的,它無法解決線性不可分的兩類樣本的分類問題,如簡單的線性感知器不可能實現「異或」的邏輯關系等。這一論斷給當時人工神經元網路的研究帶來沉重的打擊。開始了神經網路發展史上長達10年的低潮期。
(1)、自組織神經網路SOM模型:1972年,芬蘭的KohonenT.教授,提出了自組織神經網路SOM(Self-Organizing feature map)。後來的神經網路主要是根據KohonenT.的工作來實現的。SOM網路是一類無導師學習網路,主要用於模式識別﹑語音識別及分類問題。它採用一種「勝者為王」的競爭學習演算法,與先前提出的感知器有很大的不同,同時它的學習訓練方式是無指導訓練,是一種自組織網路。這種學習訓練方式往往是在不知道有哪些分類類型存在時,用作提取分類信息的一種訓練。
(2)、自適應共振理論ART:1976年,美國Grossberg教授提出了著名的自適應共振理論ART(Adaptive Resonance Theory),其學習過程具有自組織和自穩定的特徵。
(1)、Hopfield模型:1982年,美國物理學家霍普菲爾德(Hopfield)提出了一種離散神經網路,即離散Hopfield網路,從而有力地推動了神經網路的研究。在網路中,它首次將李雅普諾夫(Lyapunov)函數引入其中,後來的研究學者也將Lyapunov函數稱為能量函數。證明了網路的穩定性。1984年,Hopfield 又提出了一種連續神經網路,將網路中神經元的激活函數由離散型改為連續型。1985 年,Hopfield和Tank利用Hopfield神經網路解決了著名的旅行推銷商問題(Travelling Salesman Problem)。Hopfield神經網路是一組非線性微分方程。Hopfield的模型不僅對人工神經網路信息存儲和提取功能進行了非線性數學概括,提出了動力方程和學習方程,還對網路演算法提供了重要公式和參數,使人工神經網路的構造和學習有了理論指導,在Hopfield模型的影響下,大量學者又激發起研究神經網路的熱情,積極投身於這一學術領域中。因為Hopfield 神經網路在眾多方面具有巨大潛力,所以人們對神經網路的研究十分地重視,更多的人開始了研究神經網路,極大地推動了神經網路的發展。
(2)、Boltzmann機模型:1983年,Kirkpatrick等人認識到模擬退火演算法可用於NP完全組合優化問題的求解,這種模擬高溫物體退火過程來找尋全局最優解的方法最早由Metropli等人1953年提出的。1984年,Hinton與年輕學者Sejnowski等合作提出了大規模並行網路學習機,並明確提出隱單元的概念,這種學習機後來被稱為Boltzmann機。
Hinton和Sejnowsky利用統計物理學的感念和方法,首次提出的多層網路的學習演算法,稱為Boltzmann 機模型。
(3)、BP神經網路模型:1986年,儒默哈特(D.E.Ru melhart)等人在多層神經網路模型的基礎上,提出了多層神經網路權值修正的反向傳播學習演算法----BP演算法(Error Back-Propagation),解決了多層前向神經網路的學習問題,證明了多層神經網路具有很強的學習能力,它可以完成許多學習任務,解決許多實際問題。
(4)、並行分布處理理論:1986年,由Rumelhart和McCkekkand主編的《Parallel Distributed Processing:Exploration in the Microstructures of Cognition》,該書中,他們建立了並行分布處理理論,主要致力於認知的微觀研究,同時對具有非線性連續轉移函數的多層前饋網路的誤差反向傳播演算法即BP演算法進行了詳盡的分析,解決了長期以來沒有權值調整有效演算法的難題。可以求解感知機所不能解決的問題,回答了《Perceptrons》一書中關於神經網路局限性的問題,從實踐上證實了人工神經網路有很強的運算能力。
(5)、細胞神經網路模型:1988年,Chua和Yang提出了細胞神經網路(CNN)模型,它是一個細胞自動機特性的大規模非線性計算機模擬系統。Kosko建立了雙向聯想存儲模型(BAM),它具有非監督學習能力。
(6)、Darwinism模型:Edelman提出的Darwinism模型在90年代初產生了很大的影響,他建立了一種神經網路系統理論。
(7)、1988年,Linsker對感知機網路提出了新的自組織理論,並在Shanon資訊理論的基礎上形成了最大互信息理論,從而點燃了基於NN的信息應用理論的光芒。
(8)、1988年,Broomhead和Lowe用徑向基函數(Radialbasis function, RBF)提出分層網路的設計方法,從而將NN的設計與數值分析和線性適應濾波相掛鉤。
(9)、1991年,Haken把協同引入神經網路,在他的理論框架中,他認為,認知過程是自發的,並斷言模式識別過程即是模式形成過程。
(10)、1994年,廖曉昕關於細胞神經網路的數學理論與基礎的提出,帶來了這個領域新的進展。通過拓廣神經網路的激活函數類,給出了更一般的時滯細胞神經網路(DCNN)、Hopfield神經網路(HNN)、雙向聯想記憶網路(BAM)模型。
(11)、90年代初,Vapnik等提出了支持向量機(Supportvector machines, SVM)和VC(Vapnik-Chervonenkis)維數的概念。
經過多年的發展,已有上百種的神經網路模型被提出。
深度學習(Deep Learning,DL)由Hinton等人於2006年提出,是機器學習的一個新領域。深度學習本質上是構建含有多隱層的機器學習架構模型,通過大規模數據進行訓練,得到大量更具代表性的特徵信息。深度學習演算法打破了傳統神經網路對層數的限制,可根據設計者需要選擇網路層數。
突觸是神經元之間相互連接的介面部分,即一個神經元的神經末梢與另一個神經元的樹突相接觸的交界面,位於神經元的神經末梢尾端。突觸是軸突的終端。
大腦可視作為1000多億神經元組成的神經網路。神經元的信息傳遞和處理是一種電化學活動.樹突由於電化學作用接受外界的刺激,通過胞體內的活動體現為軸突電位,當軸突電位達到一定的值則形成神經脈沖或動作電位;再通過軸突末梢傳遞給其它的神經元.從控制論的觀點來看;這一過程可以看作一個多輸入單輸出非線性系統的動態過程。
神經元的功能特性:(1)時空整合功能;(2)神經元的動態極化性;(3)興奮與抑制狀態;(4)結構的可塑性;(5)脈沖與電位信號的轉換;(6)突觸延期和不應期;(7)學習、遺忘和疲勞。
神經網路從兩個方面模擬大腦:
(1)、神經網路獲取的知識是從外界環境中學習得來的。
(2)、內部神經元的連接強度,即突觸權值,用於儲存獲取的知識。
神經網路系統由能夠處理人類大腦不同部分之間信息傳遞的由大量神經元連接形成的拓撲結構組成,依賴於這些龐大的神經元數目和它們之間的聯系,人類的大腦能夠收到輸入的信息的刺激由分布式並行處理的神經元相互連接進行非線性映射處理,從而實現復雜的信息處理和推理任務。
對於某個處理單元(神經元)來說,假設來自其他處理單元(神經元)i的信息為Xi,它們與本處理單元的互相作用強度即連接權值為Wi, i=0,1,…,n-1,處理單元的內部閾值為θ。那麼本處理單元(神經元)的輸入為:
,而處理單元的輸出為:
式中,xi為第i個元素的輸入,wi為第i個處理單元與本處理單元的互聯權重即神經元連接權值。f稱為激活函數或作用函數,它決定節點(神經元)的輸出。θ表示隱含層神經節點的閾值。
神經網路的主要工作是建立模型和確定權值,一般有前向型和反饋型兩種網路結構。通常神經網路的學習和訓練需要一組輸入數據和輸出數據對,選擇網路模型和傳遞、訓練函數後,神經網路計算得到輸出結果,根據實際輸出和期望輸出之間的誤差進行權值的修正,在網路進行判斷的時候就只有輸入數據而沒有預期的輸出結果。神經網路一個相當重要的能力是其網路能通過它的神經元權值和閾值的不斷調整從環境中進行學習,直到網路的輸出誤差達到預期的結果,就認為網路訓練結束。
對於這樣一種多輸入、單輸出的基本單元可以進一步從生物化學、電生物學、數學等方面給出描述其功能的模型。利用大量神經元相互連接組成的人工神經網路,將顯示出人腦的若干特徵,人工神經網路也具有初步的自適應與自組織能力。在學習或訓練過程中改變突觸權重wij值,以適應周圍環境的要求。同一網路因學習方式及內容不同可具有不同的功能。人工神經網路是一個具有學習能力的系統,可以發展知識,以至超過設計者原有的知識水平。通常,它的學習(或訓練)方式可分為兩種,一種是有監督(supervised)或稱有導師的學習,這時利用給定的樣本標准進行分類或模仿;另一種是無監督(unsupervised)學習或稱無導師學習,這時,只規定學習方式或某些規則,而具體的學習內容隨系統所處環境(即輸入信號情況)而異,系統可以自動發現環境特徵和規律性,具有更近似於人腦的功能。
在人工神經網路設計及應用研究中,通常需要考慮三個方面的內容,即神經元激活函數、神經元之間的連接形式和網路的學習(訓練)。
『玖』 優化演算法總結
本文介紹一下機器學習和深度學習中常用的優化演算法和優化器以及一些其他我知道的優化演算法,部分演算法我也沒有搞懂,就先記錄下來以後慢慢研究吧.*_*.
1.梯度下降演算法(Gradient Descent)
梯度下降法可以參考我另一篇文章 機器學習-線性回歸 里的講解,這里就不在重復敘述.這里需要強調一下,深度學習里常用的SGD,翻譯過來是隨機梯度下降,但是實質是mini-batch梯度下降(mini-batch-gd),或者說是兩者的結合更准確一些.
SGD的優點是,演算法簡單,計算量小,在函數為凸函數時可以找到全局最優解.所以是最常用的優化演算法.缺點是如果函數不是凸函數的話,很容易進入到局部最優解而無法跳出來.同時SGD在選擇學習率上也是比較困難的.
2.牛頓法
牛頓法和擬牛頓法都是求解無約束最優化問題的常用方法,其中牛頓法是迭代演算法,每一步需要求解目標函數的海森矩陣的逆矩陣,計算比較復雜.
牛頓法在求解方程根的思想:在二維情況下,迭代的尋找某一點x,尋找方法是隨機一個初始點x_0,目標函數在該點x_0的切線與x坐標軸的交點就是下一個x點,也就是x_1.不斷迭代尋找x.其中切線的斜率為目標函數在點x_0的導數(梯度),切必過點(x_0,f(x_0)).所以迭代的方程式如圖1,為了求該方程的極值點,還需要令其導數等於0,也就是又求了一次導數,所以需要用到f(x)的二階導數.
在最優化的問題中,牛頓法提供了一種求解的辦法. 假設任務是優化一個目標函數f, 求函數ff的極大極小問題, 可以轉化為求解函數f導數等於0的問題, 這樣求可以把優化問題看成方程求解問題(f的導數等於0). 剩下的問題就和牛頓法求解方程根的思想很相似了.
目標函數的泰勒展開式:
化簡後:
這樣就得到了與圖1相似的公式,這里是二維的,在多維空間上,求二階導數就是求海森矩陣,因為是分母,所以還需要求海森矩陣的逆矩陣.
牛頓法和SGD的區別:
牛頓法是二階求導,SGD是一階求導,所以牛頓法要收斂的更快一些.SGD只考慮當前情況下梯度下降最快的方向,而牛頓法不僅考慮當前梯度下降最快,還有考慮下一步下降最快的方向.
牛頓法的優點是二階求導下降速度快,但是因為是迭代演算法,每一步都需要求解海森矩陣的逆矩陣,所以計算復雜.
3.擬牛頓法(沒搞懂,待定)
考慮到牛頓法計算海森矩陣比較麻煩,所以它使用正定矩陣來代替海森矩陣的逆矩陣,從而簡化了計算過程.
常用的擬牛頓法有DFP演算法和BFGS演算法.
4.共軛梯度法(Conjugate Gradient)
共軛梯度法是介於最速下降法與牛頓法之間的一個方法,它僅需利用一階導數信息,但克服了最速下降法收斂慢的缺點,又避免了牛頓法計算海森矩陣並求逆的缺點.共軛梯度法不僅是解決大型線性方程組最有用的方法之一,也是解大型非線性最優化最有效的演算法之一.
5.拉格朗日法
參考SVM里的講解 機器學習-SVM
6.動量優化法(Momentum)
動量優化法主要是在SGD的基礎上,加入了歷史的梯度更新信息或者說是加入了速度更新.SGD雖然是很流行的優化演算法,但是其學習過程很慢,因為總是以同樣的步長沿著梯度下降的方向.所以動量是為了加速學習的方法.
其中第一行的減號部分是計算當前的梯度,第一行是根據梯度更新速度v,而α是新引進的參數,在實踐中,α的一般取值為 0.5,0.9 和 0.99.和學習率 一樣,α 也會隨著時間不斷調整.一般初始值是一個較小的值,隨後會慢慢變大.
7.Nesterov加速梯度(NAG, Nesterov accelerated gradient)
NAG是在動量優化演算法的基礎上又進行了改進.根據下圖可以看出,Nesterov 動量和標准動量之間的區別體現在梯度計算上, Nesterov 動量中,梯度計算在施加當前速度之後.因此,Nesterov 動量可以解釋為往標准動量方法中添加了一個校正因子
8.AdaGrad演算法
AdaGrad演算法,自適應優化演算法的一種,獨立地適應所有模型參數的學習率,縮放每個參數反比於其所有梯度歷史平均值總和的平方根.具有代價函數最大梯度的參數相應地有個快速下降的學習率,而具有小梯度的參數在學習率上有相對較小的下降.通俗一點的講,就是根據實際情況更改學習率,比如模型快要收斂的時候,學習率步長就會小一點,防止跳出最優解.
其中g是梯度,第一行的分母是計算累計梯度的平方根, 是為了防止分母為0加上的極小常數項,α是學習率.
Adagrad的主要優點是不需要人為的調節學習率,它可以自動調節.但是依然需要設置一個初始的全局學習率.缺點是隨著迭代次數增多,學習率會越來越小,最終會趨近於0.
9.RMSProp演算法
RMSProp修改 AdaGrad 以在非凸設定下效果更好,改變梯度積累為指數加權的移動平均.AdaGrad旨在應用於凸問題時快速收斂.
10.AdaDelta演算法
11.Adam演算法
Adam是Momentum和RMSprop的結合體,也就是帶動量的自適應優化演算法.
12.Nadam演算法
13.模擬退火演算法
14.蟻群演算法
15.遺傳演算法
動量是為了加快學習速度,而自適應是為了加快收斂速度,注意學習速度快不一定收斂速度就快,比如步長大學習速度快,但是很容易跳出極值點,在極值點附近波動,很難達到收斂.
未完待定....
參考:
《統計學習方法》 李航 著
《深度學習》 花書
『拾』 模擬退火演算法優化BP神經網路
bp神經元網路的學習過程真正求解的其實就是權值的最優解,因為有可能會得出局部最優解,所以你才會用模擬退火來跳出局部最優解,也就是引入了逃逸概率。在這里你可以把bp的學習過程理解成關於 誤差=f(w1,w2...) 的函數,讓這個函數在模擬退火中作為目標函數,再加上模擬退火的一些初始參數(初始溫度啊,退火速度啊等等),就能找到權值解空間的一個不錯的最優解,就是一組權向量。把權向量帶入到bp當中去,輸入新的對象,自然就能算出新的輸出了。
演算法學習要腳踏實地,你要先學會神經元,在學會退火,兩個的結合你才能理解。