1. 程式人生 > >演算法工程師之路——Deeplearning.ai神經網路與深度學習篇Week4

演算法工程師之路——Deeplearning.ai神經網路與深度學習篇Week4

上一週的回顧

      剛剛過去了10月最後完整的一週,馬上就要撲向11月的懷抱了。很開心能夠在每週總結自己的所學所得,整理為部落格,這樣也是一種讓人充滿了成就感的事情。在上一週我開始學著逐漸運用之前提到的多執行緒學習法進行知識的擴充,收到了不錯的效益,一方面工程能力在實際專案的鍛鍊中不斷提升,另一方面也接觸到了許多偏學術的知識和規則。當然啦,對於Andrew大佬視訊課的學習,也一直被我放在較為重要的地位,儘量擠出時間來進行學習。繼續加油,小IG決賽衝鴨!

不登高山,不知天之高也;不臨深溪,不知地之厚也。

Deeplearning.ai神經網路與深度學習(Week3)

1.1 Python中的廣播(broadcast)

      在Python爸爸的資料科學庫NumPy中,有一個非常有趣的概念:廣播(broadcast)。那什麼叫廣播呢?舉個栗子,當計算1+1時,我們可以很輕鬆的給出實數2這個答案,但如果要計算陣列[1,1,1]+1呢?當進行這樣的計算時,NumPy會幫助我們對實數1進行兩次的複製而得到一個行向量[1,1,1],因此,上述表示式的結果即為[2,2,2]。這樣的計算方法在進行神經網路的編寫能夠發揮很大的作用,簡化了計算過程。

      一般的,對於加減乘除的基本運算,Numpy都將會對實數或矩陣進行轉換,從而得到方便計算的目的:

      需要注意的是,有時也許我們需要對矩陣(向量)進行變換,這時我們可以用到np.reshape

方法進行變換,其底層演算法時間複雜度僅為O(1)級別,使用起來相當方便。

1.2 最大似然估計

      在這裡,我想特地記錄一下最大似然估計的概念以及具體數學公式,因為其在機器學習、深度學習領域對於模型引數的求解佔據著相當重要的地位。最大似然估計(Maximum Likelihood Estimation)提供了一種給定觀察資料來評估模型引數的方法,即對於模型給定、但引數未知的情況下結合採集的部分樣本來估計模型引數的統計方法。舉個栗子,比如我們想統計全國程式猿的工資情況,雖然我們可以得到一部分的採集樣本(嗯,除非程式猿們樂意share自己的薪水),但我們並沒有能力統計到每一個程式猿的工資。在假設全國程式猿工資服從正態分佈

條件且均值和方差未知的情況下,我們可以通過蒐集到部分樣本情況通過公式推導來對其均值和方差進行估計。需要注意的是,我們需要假設取樣是獨立同分布的,這是最大似然估計中最重要的假設。具體對最大似然估計進行描述:       假設x1,x2,…,xn為獨立同分布的取樣樣本,θ為模型引數,f為我們所使用的統計模型,遵循獨立同分布假設。引數為θ的模型f產生上述取樣可表示為: f(x1,x2,...,xnθ)=f(x1θ)f(x2θ)...f(xnθ) f(x_1,x_2,...,x_n|θ)=f(x_1|θ)*f(x_2|θ)*...*f(x_n|θ)

      似然定義為: L(θx1,x2,...,xn)=f(x1,x2,...,xnθ)=i=1nf(xiθ) L(θ|x_1,x_2,...,x_n)=f(x_1,x_2,...,x_n|θ)=\quad \prod_{i=1}^nf(x_i|θ)       對兩邊同時取對數,可得到: lnL(θx1,x2,...,xn)=i=1nlnf(xiθ) lnL(θ|x_1,x_2,...,x_n)=\quad \sum_{i=1}^nlnf(x_i|θ)       上式左邊稱為對數似然,那麼平均對數似然為: l^=1nlnL \hat{l}=\frac{1}nlnL       基於以上推導,那我們所稱最大似然表示式如下: θ^mle=argmaxl^(θx1,x2,...,xn)(θΘ) \hat{θ}_{mle}=argmax\hat{l}(θ|x_1,x_2,...,x_n)_{(θ\in\Theta)}       通過以上推導,我們就得到了最大似然估計的具體表述方法。最後一點需要注意的是,最大似然估計只考慮某個模型能產生某個給定觀察序列的概率,但是沒有考慮到該模型本身的概率。

1.3 神經網路概覽

      好了,度過了公式推導的艱辛時刻,現在來看一些相對輕鬆的內容。什麼是神經網路?神經網路的結構是什麼樣的?神經網路的計算過程如何?可以用下面這張圖作一個大概的瞭解:

      對於輸入向量,我們通過每一個sigmoid過程進行從左向右的計算,最後得到計算出的結果並可以得到損失函式。但這樣還沒完,我們還需要進行從右到左的計算,即反向傳播過程,來調節函式引數以達到最小化的損失函式,使結果更加精確可信。舉個雙層神經網路的例子:

      輸入層Input Layer、隱藏層Hidden Layer、輸出層Output Layer組成了神經網路的基本結構,在這個例子中,我們對輸入向量進行兩次logistic迴歸計算,最後得到計算結果。具體計算過程後續會有詳細解釋。

論文與工程訓練總結

      本週對上次會議上學長講到的論文Forecasting on Trading: A Parameter Adaptive Framework Based on Q-learning進行了再閱讀和分析,瞭解到了許多人工智慧技術在金融領域的應用方法,對當前金融大資料現狀有了一個初步的認識。繼續對知乎DQN專欄進行了學習,目前已進行到第4章動態規劃與Q-Learning,發現有許多複雜的數學公式需要進行推導,看來是時候對概率論以及統計學習方法進行復習了~除此之外,工程專案也在推進中,不過真的是,需要補充很多以前留下的前端知識的黑洞啊。最後,想請問小夥伴們,孩子5歲才開始學Tensorflow晚了嗎?知乎er們的答案是:

      TF萬歲!Caffe萬歲!XgBoost萬歲!腳…指令碼萬歲!