《數學之美((第二版)》(六)

2022-09-18 08:27:27 字數 4665 閱讀 1508

二十

六、維特比和他的維特比演算法

維特比演算法是現代數字通訊中最經常使用的演算法,同一時候也是非常多自然語言處理採用的解碼演算法。

首先談了維特比演算法。 他和雅各布共同創辦了高通公司,提出了cdma標準。

維特比演算法是針對籬笆網路的有向圖最短路徑提出的。是乙個特殊但應用最廣的動態規劃演算法,凡是使用隱含馬爾可夫模型描寫敘述的問題都能夠用它來解碼。之後便具體介紹了維特比演算法。指出它的複雜度是o(n·d^2),當中n是網格長度,d是網格寬度。

之後又介紹了cdma技術—3g移動通訊的基礎。對cdma(分碼多重進接)技術發明和普及貢獻最大的兩個人是拉瑪爾和維特比。

在cdma曾經,移動通訊使用過兩種技術:分頻多重進接(fdma)和分時多重進接(tdma)。擴頻傳輸是在乙個較寬的擴充套件頻帶上進行的,它由三點優點:抗干擾能力極強、訊號非常難被截獲、利用頻寬更充分。

二十

七、上帝的演算法:期望最大化演算法

首先談到了文字的自收斂分類。前面介紹的利用事先設定好的類別對新的文字進行分類的問題須要有事先設定好的類別和文字中心。而自底向上將文字兩兩比較進行聚類的方法計算時間較長。

自收斂的分類是隨機地挑出一些類別的中心,然後來優化這些中心。使它們和真實的聚類中心盡可能的一致。

詳細過程是:

1)隨機挑選k(類別數)個點。作為起始的中心c1(0),....,ck(0)。

2)計算全部點到這些聚類中心的距離。將這些點歸到近期的一類中。

3)又一次計算每一類的中心。

4)反覆上述過程,直到每次新的中心和舊的中心之間的偏移很小,即過程收斂。

最後是延伸閱讀:期望最大化和收斂的必定性。在一般性的問題中,假設有許多的觀測資料(點),類似上面的方法,讓計算機不斷迭代來學習乙個模型。首先,依據現有的模型。計算各個觀測資料輸入到模型的計算結果,這個過程稱為期望值計算過程,或e過程。接下來。又一次計算模型引數,以最大化期望值,這個過程稱為最大化的過程,或m過程。這一類演算法都稱為em演算法。假設優化的目標函式時乙個凸函式。那麼一定能保證得到全域性最優解。

二十

八、邏輯回歸和搜尋廣告

首先談了搜尋廣告的發展

經歷了三個階段:第一階段是競價排名廣告。第二個階段是綜合出價和點選率(click through rate。ctr)等因素決定廣告的投放,關鍵技術就是預測使用者可能點選候選廣告的概率,或稱為點選率預估;第三階段是進一步的全域性優化。

預估點選率最好的辦法是依據以往的經驗值來預測。可是這樣的方法存在非常多不足。於是後來工業界普遍採用了邏輯回歸模型(logistic

regression 或 logistic model)。

然後就談到了邏輯回歸模型。它是指將乙個事件出現的概率逐漸適應到一條邏輯曲線上(s型曲線,開始變化快。逐漸減慢。最後飽和),變數範圍是無窮而值域在[0,1]之間。乙個簡單的邏輯回歸函式形式是:f(z) = 1 / (1+e^-z)。之後以乙個簡單的樣例來解釋了邏輯回歸模型,這裡面有兩點技巧:一是與廣告點選相關的資訊,二是引數值的訓練。

邏輯回歸模型是一種將影響概率的不同因素結合在一起的指數模型,和非常多指數模型的訓練方法相似,可採用gis和iis來實現。

二十

九、各個擊破演算法和google雲計算的基礎

雲計算的關鍵之中的乙個是怎樣把乙個非常大的計算問題。自己主動分解到很多計算能力不是非常強大的計算機上共同完畢。google給出了乙個叫mapreduce的程式。其根本原理就是分治演算法(divide-and-conquer),本書中稱為「各個擊破」法。

首先談了分治演算法的原理

即將乙個複雜的問題分成若干個簡單的子問題進行解決,然後對子問題的結果進行合併。得到原有問題的解。

然後談了從分治演算法到mapreduce。先以乙個大矩陣相乘的樣例進行了解釋,引出了mapreduce的根本原理。將乙個大任務拆分成小的子任務,而且完畢子任務的計算,這個過程叫做map。將中間結果合併成終於結果。這個過程叫reduce。怎樣保證各個server負載均衡。怎樣合併返回值就是mapreduce在project上所做的事情。

三十、google大腦和人工神經網路

首先談了人工神經網路。它是乙個特殊的有向圖,特殊性在於:

1)全部節點都是分層的。每一層節點能夠通過有向弧指向上一層節點,可是同一層節點之間沒有弧相連線,並且每個節點不能越過一層連線到上上層的節點上。

2)每一條弧上有乙個值,依據這些值能夠用乙個很easy的公式算出它們所指節點的值。

最以下一層叫輸入層,最上面一層叫輸出層,中間的叫中間層,因為對外不可見所以也叫隱含層。接下來用乙個語音識別的樣例進行了介紹。人工神經網路的基本原理是:來自輸入節點的數值(x1,...,xn)依照它們輸出的弧的權重(w1,...,wn)。依據公式g=w0+x1·w1+...+xn·wn進行線性加權得到g,然後再做一次(僅僅能做一次)函式變換f(g)賦給第二層的節點y;第二層的節點照此將數值向後面傳遞。直到最後一層即輸出層。

在模式分類時。乙個模式的特徵值從輸入層開始一層層向後傳遞,最後在輸出層哪個節點的數值最大,輸入的模式就被分在了哪一類。

在人工神經網路中,須要設計的部分僅僅有兩個:乙個是它的結構。即網路分幾層、每層幾個節點、節點間怎樣連線等;還有乙個是非線性函式f(·)的設計,經常使用的函式時指數函式。

假設把不同輸出節點上得到的值看成是一種概率分布,那麼便等價於乙個概率模型了。

然後談了訓練人工神經網路

分為有監督的訓練和無監督的訓練兩種。

對於有監督的訓練。依據訓練資料要找到一組引數w,使得模型給出的輸出值和訓練資料中設計好的輸出值盡可能一致。能夠引入成本函式將其轉化成乙個最優化問題,解決方法最經常使用的是梯度下降法。

對於無監督的訓練。須要定義一種新的成本函式,要使分完類後同一類樣本應該相互比較靠近,不同類的樣本盡可能遠離,之後能夠再用梯度下降法進行訓練了。

還談到了人工神經網路與貝葉斯網路的關係

同樣之處是:

1)都是有向圖,都遵循馬爾可夫如果(每個節點的取值僅僅取決於前一級的節點)。

2)訓練方法相似。

3)對於非常多模式分類問題,效果上相似。

4)訓練計算量都特別大。

不同之處是:

1)人工神經網路在結構上是全然標準化的。而貝葉斯網路更靈活。

2)人工神經網路僅僅能先進行線性變換再進行非線性變換,所以實現起來比較easy。而貝葉斯網路無限制。更加複雜。

3)人工神經網路輸出相對獨立,非常難處理乙個序列,所以經常使用於預計乙個概率模型的引數,不用作解碼器;而貝葉斯網路更easy考慮前後相關性,所以能夠解碼乙個輸入的序列。

最後是延伸閱讀:「google大腦」。早期人工神經網路受限。由於假設規模小幹不了事情,假設規模大計算量又跟不上。

2023年後雲計算的興起使得訓練人工神經網路的方法必須改變。google大腦的創新之處就是利用了雲計算的並行處理技術。google大腦採用人工神經網路的原因是:

1)理論上能夠畫出各種形狀的模式分類邊界,有非常好的通用性。

2)演算法很穩定。沒怎麼變過。

3)easy並行實現。

google大腦並行訓練人工神經網路的引數,在降低計算量方面做了兩個改進:一是採用隨機梯度下降法。僅僅隨機抽取少量的資料來計算成本函式。大大降低計算量;二是採用l-bfgs方法,降低訓練的迭代次數。對於其儲存問題,輸入端的訓練資料儲存在輸入端的server本地。每乙個server的模型引數由還有一組server單獨儲存。

三十

一、大資料的威力:談談資料的重要性

首先談了資料的重要性

舉了三個樣例說明資料不僅在科學研究中,並且在生活的方方面面都非常重要。

然後談了資料的統計和資訊科技

最後談到了為什麼須要大資料

大資料不僅須要資料量大。更重要的是它的多維度和完備性。然後用了好多基因和疾病的樣例來說明大資料對醫療行業的重要性。

最後作者做了乙個總結:

1)僅僅有當一些隨機事件的組合一同出現了非常多次以後,才幹得到有意義的統計規律。

2)大資料的採集過程是乙個自然的過程。有利於消除主觀性的偏差。

3)僅僅有多維度的大資料才幹發現新的規律。

4)大資料能夠解決it行業之外的一些難題。

附錄、計算複雜度

假設乙個問題存在乙個多項式複雜度的演算法,這個問題稱為p問題(polynomial),這類問題被覺得是計算機能夠「有效」解決的。假設乙個演算法的計算量比n的多項式函式還高,儘管理論上有足夠的時間能夠計算,但實際是做不到的,這些稱為非多項式(non-polynomial)問題。

在非多項式問題中。有一類問題即非確定的多項式(nondeterministic polynomial。簡稱np)問題受到了極大關注。對於計算複雜度至少是np-complete甚至更大的問題,稱為np-hard問題。

至此,這本書便完結了。

總的來看,這是一本科普性質的大眾書籍,裡面將一些前沿性的高深技術用非常通俗的語言做了解說,不管是普通讀者還是技術大牛,都能從這本書裡受益匪淺。我個人認為這本書寫的非常好,以後也會常常翻閱回想。

Effective C 第二版 中文 之02

原則二 使用常量時,盡量使用readonly 而不是const c 有兩種不同的常量 編譯時常量 const 和執行時常量 readonly 它們擁有非常不同的行為,不恰當的使用會造成你程式效能上和正確性上的損失。這兩個方面的損失都不好,但是如果非要選一方的話,乙個慢一點但是正確的程式要好過乙個快一...

array c 實現,第二版

include include include include using namespace std namespace mylib array const array coll alloc coll.alloc size coll.size ia null array const pointer...

Effective Java 中文第二版

第2章 建立和銷毀物件 第1條 考慮用靜態工廠方法代替構造器 第2條 遇到多個構造器引數時要考慮用構建器 第3條 用私有構造器或者列舉型別強化singleton屬性 第4條 通過私有構造器強化不可例項化的能力 第5條 避免建立不必要的物件 第6條 消除過期的物件引用 第7條 避免使用終結方法 第3章...