爬蟲

8 April 2020
cs cs server client crawler requests beautifulsoup

本文章僅記錄學習爬蟲的過程


nginx筆記

31 March 2020
cs cs nginx reverse_proxy

此文章僅用來紀錄學習nginx的過程


Dropout

10 March 2020
cs nlp dropout regularization

Dropout這個概念是在2014年被提出的,它的概念其實很簡單,在訓練的時候,隨機將一些神經元關閉,這樣避免神經元之間過度依賴(prevents units from co-adapting too much),並在Inference時將所有神經元開啟,這樣可以輕鬆估計各個不同小的神經網路的平均值,使用dropout可以大幅降低overfitting的可能


Cycle Detection Algorithm

8 March 2020
cs cs cycle-detection leetcode

在寫LeetCode 287時遇到了這個問題,看了解答後,發覺到有一個叫做龜兔賽跑的解法,看起來非常神奇,但其實背後的想法蠻簡單的,這篇文章稍微整理一下


搞懂Back Propagation的微分推導過程

20 February 2020
cs nlp back-propagtion loss-function optimization

Back Propagation


假設一個簡單兩顆神經元$x_{1}, x_{2}$的神經網路,對於每顆神經元的更新$\frac{ \partial C}{ \partial w_{i}}$,可以分為Forward PassBackward Pass兩個步驟,Forward Pass非常容易計算,而Backward則是須從最後一層推回來,故得其名


交叉熵(cross entropy)

19 February 2020
cs nlp entropy cross-entropy loss

In information theory, the cross entropy between two probability distributions $p$ and $q$ over the same underlying set of events measures the average number of bits needed to identify an event drawn from the set if a coding scheme used for the set is optimized for an estimated probability distribution $q$ , rather than the true distribution $p$ .


詞向量(Word Vector)

11 February 2020
cs nlp word-vector skip-gram softmax CBOW hierarchical-softmax negative-sampling NCE

Stanford CS 224N課程第一週內容

在2014年,Mikolov Tomàs等人提出的這篇 Distributed Representations of Words and Phrases and their Compositionality 為接下來許多以詞向量為基礎的模型定下根基,以往使用神經網路(Neural Network)訓練詞向量耗時長,這篇論文提出了一些方法進行改善,不僅提升效能也大幅降低訓練成本。

使用詞向量(word vector)讓我們能夠將詞彙轉換成能夠被機器理解的向量,並且這個向量能夠有效反應出詞義,近義詞之間有著相近的詞向量,例如:紅茶、奶茶、綠茶它們都是飲料類,所以會具備類似的詞向量,且在訓練的過程中我們只需提供足夠大的語料,不需要透過人工標記就能夠訓練這樣的模型(Skip-Gram, CBOW, …),甚至也能直接使用網路上其他人預訓練的模型(Google, Facbook, …)


You shall know a word by the company it keeps - J. R. Firth 1957


一個字的意思是由周遭的字決定,這樣的想法基本上就是skip-gram所做的事情,我們藉由一個訓練目標函式,讓一個中間字(center word)能夠對預測周遭的字給出較高的機率,經過這樣的訓練過程,擁有相近的前後文的詞,就會得到更相近的詞向量


隱藏式馬可夫模型 - HMM(Hidden Markov Model)

9 June 2018
cs nlp hmm markov-chain

HMM是利用觀測值來推斷狀態的一個算法,而狀態被稱為隱藏狀態(hidden state)是因為我們看不到狀態,只能看到觀測值,所以實際上我們對狀態是不了解的,例如:我們可以觀察到身體狀態是正常、咳嗽、暈眩,從而透過HMM推斷背後的狀態為健康還是生病。

HMM可以被用在許多應用上,例如語音識別,我們觀察得到聲波,但該聲波對應到的文字我們是不知道的,可以透過HMM從聲波推回狀態來得到可能的文字,除此之外,在許多序列型任務都有HMM的應用

我們雖然對隱藏狀態(hidden state)不了解,但我們知道狀態之間的轉移機率(transition probability)還有狀態對應到觀測值的發射機率(emission probability),從這兩者搭配觀測序列