# 人工智慧導論期末整理 :::spoiler 目錄 [TOC] ::: ## Chapter 19. Learning from examples ### Entropy * 討論一個隨機變數不確定性的方式。 $Entropy = -\sum_k P(v_k)*log_2P(v_k)$ * 對於 boolean variable 來說, $entropy$ 為底下公式 $Entropy = B(P) = -(P * log_2P + (1-P) * log_2(1-P))$ * 如果 training set 中有 p 個 positive , n 個 negative,整個 set 的 $entropy$ 為 $B(\frac{p}{p+n})$ * 如果使用一個 attribute 把一個 set 分成 $p_k$ 個 positive 和 $n_k$ 個 negative,整個 set 剩下的 $entropy$ 為 $Remainder = \sum_{k=1}^d \frac{p_k + n_k}{p + n} * B(\frac{p_k}{p_k + n_k})$ * 透過一個 attribute 得到的資訊 $(Gain)$ 為原先已知減掉 $Remainder$ ### decision tree pruning * 從一個已經完整建好的 decision tree 開始做,將不重要的 attribute 刪除。 * 決定是否重要可從 $Gain$ 得知,如果 $Gain \simeq 0$ 代表這個 attribute 不重要,也就是 $\frac{p_k}{p_k + n_k} \simeq \frac{p}{p+n}$。 ### Statistical significance test TBA, not something I could read p.28 and p.29 ### independent and identically distributed (i.i.d.) * 每個 sample 值與之前的 sample 直接無關 * 而且每次 sample 之間的機率分布狀況皆相同 ### k-fold cross validation * 將資料分成 $k$ 等分,每次皆拿一部分作為 testing,其他部分作為 training data,將每次結果取平均作為整體模型的表現 * 如果 $k = n$ ,這代表只使用一筆資料作為 testing,別名為 leave-one-out cross-validation (LOOCV) ### expected loss * 對於 hypothesis $h$ 和 loss function $L$ 來說,expected generalization loss(GenLoss) 為 $GenLoss_L(h) = \sum_{(x, y) \in \epsilon} L(y, h(x)) * P(x,y), h(x) = \hat{y}$,而 $\epsilon$ 為所有輸入輸出 (x, y) 組合 * 最佳的 hypothesis $h^*$ 即為上面式子中得出最小值的 $h$,也就是 $h^* = argmin\ GenLoss_L(h)$。 * 因為實際的 $P(x,y)$ 未知,我們只能用 empirical loss 預測,假設一個 example set $E$,預測算式為$EmpLoss_{L,E}(h) = \frac{1}{N} \sum_{(x, y) \in E} L(y, h(x))), h(x) = \hat{y}$ * 最佳的 hypothesis $\hat{h}^* = argmin\ EmpLoss_{L,E}(h)$ ### Regularization * 也可以把 Cost 定義為 empirical loss 和 model complexity 的 weighted sum,也就是 $Cost(h) = EmpLoss(h) + \lambda * Complexity(h)$ * 此時最佳的 hypothesis $h^* = argmin\ Cost(h)$ * 而 $\lambda$ 要找一個能讓 validation 判別最準確的數值。 * 透過懲罰過高 complexity 的方式定義 cost 就是regularization ### Univariate(Multivariate) linear regression ?? p.46 ### Non-parametric model * parametric model 是透過一組參數去描述整筆資料,訓練完了之後就不需要原始資料。 * 一個方法是把所有的 training data 做為模型的參數,這方法叫做 instanced-based learning 或是 memory-based learning。 ### Table lookup * 在遇到一個輸入參數時直接尋找 training data 中是否有相同的輸入,有的話就輸出對應值;沒有的話就輸出一個預設數值。 ### Nearest neighbor(KNN) * 給定一個輸入,找距離最近的 K 個數值當作數值處理的依據 * 對於 classification 來說,將每個數值做為投票,較多數的做為輸出。(因此需要 K 為奇數) * 對於 regression 來說,可輸出所有數值的平均或是中位數。又或是使用 linear regression 的方式取值。 * 計算距離的方式是 Minkowski Distance 或稱為 $L_p\ norm$,定義為 $L_p = (\sum_{i} |x_{j, i} - x_{q, i}|^p)^{1/p}$。 * $p = 2$ 代表是 Eulicean distance,而$p = 1$ 代表是 Manhattan distance。 * 對於 boolean variable,兩個點的 attribute 差異稱為 Hamming distance。 * 計算 distance 的實際數字容易受到數量級的影響,因此需要先經過 normalize 的處理。 * 另一個計算 distance 的更複雜方式稱為 Mahalanobis distance * 在資料是低維度的狀況下,KNN 的表現還算不錯;但是到了高維度,KNN 會因為很難找到距離夠近的鄰居而讓表現變得非常差。( Curse of Dimensionality ) #### k-dimentional tree (k-d tree) * balanced binary tree * 每個 node 都是將一個 attribute 做一個 threshold ,讓一半的元素落在一邊,另一半落在另一邊。 * 這方法需要非常大量的 data,至少 $2^n$ 個資料才能很快速的查詢到需要的資料。 #### Locality-sensitive hashing * 如果兩點間距離小於 $cr$ ,這兩點在 hash 後落在同個 bin 的機率很高,反之亦然。 * 從 bit-string 的 subset 隨機取值作為 hash function 。 ### Locally weighted regression * 給很接近輸入數值的點很高的 weight ,距離越遠 weight 越低,透過這種方式計算平均值。 * 計算 weight 的 function 稱為 kernel。 ### Support vector machine (SVM) * 目標是建構出 maximum margin seperator。 * 透過 kernel function 將低維度的輸入資料映射到高維度後再進行 linear seperation。這方法叫做 kernel trick。 * SVM 是 non-parametric model。 * 一個核心點是 SVM 認為有些資料相較於其他資料更加重要,如果給這些更重要的資料更多關注可以讓整個 model generalize 得更好。 ![](https://i.imgur.com/fAI1k2A.png) ### Ensemble learning * 將許多的 hypothesis 級合起來一起做出預測。 * 以 Classification 來說,這方法就是多數決。 * 以 Regression 來說,可以輸出這些預測的平均值。 * Random forest 就是 decision tree 的 ensemble learning。透過隨機改變如何取 attribute 來建出不同的 tree。 * Random forest 不受 overfitting 影響。 * 經過證明,在 Random Forest 內加入越多 Tree 後,錯誤會逐漸收斂。 * Stacked generalization(stacking) 是拿同一個 training data 在不同的 model 底下訓練,並將前面的訓練結果加入原先資料中在給下一層的 model 訓練。 * Boosting 一開始先將所有 training data 的 weight 設為 1。每次訓練時對於分類**錯誤**的 trainging data 要**提升**對應的 weight;而分類**正確**的 data 則**減少** weight。 * 調整完 weight 後救生成了一個新的 hypothesis ,重複直到有 K 個 hypothesis 後再互相比較表現狀況。 * 一個比較著名的 algorithm 是 ADABOOST ,只要 learning algorithm 的表現狀況比亂猜還要好,這個方法可以在足夠大的 K 之後完美的分類所有 data。 * 如果取樣不符合 i.i.d.,可以使用 online learning 的方式。也就是 agent 在當下獲取環境資訊並做出決策,然後再檢驗是否符合預設答案。 ### trust, intrepretability, explainability * trust: 我們有沒有辦法信任這個 model * intrepretability: 我們能不能解釋 model 內的那些參數產生了這個輸出。 * explainability: 我們能不能理解為何這個輸入經過這個 model 後產生了這個輸出。 ## Chapter 20. Learning Probabilistic Models ### Statistical learning * Baysian learning 在給定資料的狀況下計算每個 hypothesis 的機率,並且做出預測。也就是預測的結果會使用到全部的 hypothesis,並使用這個 hypothesis 對應的機率做為 weight。 * 使用貝式定理,可在只有事前機率和 likelihood 就得到事後機率 $P(h_i | d) = P(d | h_i) * P(h_i)$。 * $P(h_i)$ 是事前機率 * $P(d | h_i)$ 是在特定的 hypothesis 狀況下的 likelihood,可透過 $P(d | h_i) = \Pi_j P(d_j | j_i)$ 計算得到(假設取樣皆 i.i.d.)。 * 對於錯誤的 hypothesis,事後機率會逐漸趨向零;對於正確的 hypothesis,事後機率會逐漸趨向實際分布狀況。 ### Maximum a posteriori(MAP hypothesis) * 直接用一個最有可能的 hypothesis 去做預測,最佳 hypothesis 的取法是讓$P(h_i | d)$ 最大化。 * 將 $P(h_i | d) = P(d | h_i) * P(h_i)$ 最大化的過程可視為將 $-log_2 P(d | h_i) - log_2 P(h_i)$ 最小化(取 $log_2$ 後再轉負數)。$-log_2 P(d | h_i)$ 可當成是給定 hypothesis 後需要多少 bit 才能選定這筆 data,而 $- log_2 P(h_i)$ 可以視為需要多少 bit 才能選定這個 hypothesis。 * 這個方法則被稱為是 minimum description length(MDL),直接計算這個 hypothesis 和 data 能夠取得多少 bits 的資料。 * 如果 hypothesis space 是 uniform,MAP 就變成只需要找到一個 $h_i$ 可以最大化 $P(d | h_i)$。也就是 Maximum-likelihood hypothesis ($h_{ML}$)。 ### Density estimation 在已知資料後,訓練一個模型的這回事。 TBA, uncertain, p.16 ### Naive bayes model * "Class" variable C (要預測的目標)設成 root,"attribute" variable $X_i$ 設成 leaves。 * 稱為 "naive" 的原因是在給定某個 Class 時,假設每個 attribute 之間皆 conditionally independent。然而這個假設很常是個錯誤的假設。 ### Bayesian parameter learning * 先針對所有可能的 hypothesis 定義事前機率的分布狀況,這種作法稱為 hypothesis prior。當 data 開始進來後,再逐步更新 posterior probablility。 ### beta distribution * 這種 distribution 定義為 $beta[a, b](p) = \alpha * p^{a - 1} * (1 - p)^{b - 1}$,$\alpha$ 是 normalization constant。而 uniform distribution 正是 $beta[1, 1](p)$。 ### Expectation-maximization algorithm 1. 先隨機對於所有 data points 指派對應的 component 2. Expectation step(E-Step): 計算資料 $x_j$ 由 component $i$ 生成的機率,也就是 $p_{ij} = P(C = i | x_j) = \alpha * P(x_j | C = i) * P(C = i)$,其中 $P(x_j | C = i)$ $x_j$ 落在第 $i$ 個 component 的機率,而 $P(C = i)$ 是第 $i$ 個 component 的 weight 數值。 3. Maximization step(M-Step): 計算新的 mean, covariance, component weight。其中用到的數值 $n_i = \sum_j p_{ij}$ 為目前 component $i$ 中的 data point 個數,以及 $N$ 是所有的 data point 個數。 * $\mu_i \leftarrow \sum_j p{ij} * x_j / n_i$ * $\sum_i \leftarrow \sum_j p_{ij} * (x_j - \mu_i) * (x_i - \mu_j)^T / n_i$ * $w_i \leftarrow n_i / N$ * E-step 可視為是計算 hidden indicator variable $Z_{ij}$ 的期望值,而 $Z_{ij}$ 在 $x_j$ 是被 component $i$ 生成時才為 1,反之為 0。 ## Chapter 21. Deep Learning ### Vanishing gradient * 在某些狀況下,偏微分數值會變得極小。又因為偏微分的過程需要使用到 chain rule,越前面的 layer 更容易受到這個極小值的影響讓 weight 幾乎沒辦法更新。 ### Spatial invariance * 在一個小區塊內的 pixel 不會相差太大。 ### Convolutional neural network (CNN) * 在空間中距離很接近的 pixel 值可以透過 kernel 的運算傳送到下一層。 * stride: 每次運算之間 kernel 中心移動的 pixel 數量。 * receptive field: 這個 neuron 接收的涵蓋範圍。 * pooling and downsampling: 透過 pooling 運算,會讓輸出的圖片稍微變小,這叫做 downsampling。 * tensor: 任意維度的陣列 * 其中 vector 就是一維的 tensor,matrix 則是二維的 tensor。 ### Residual network * 將前面 layer 的資訊直接傳送到後面的 layer。 ![](https://i.imgur.com/izv3ZZ6.png) ### Learning algorithm * 通常使用 Stochastic gradient decent(SGD),透過 SGD 的隨機性讓學習過程不容易停在 local minimum。 * 另一個方法是使用 momentum,把前面幾次的數據納入考量後加入更新數值內。 ### Generalization * Weight decay: 在 loss function 中對於 weight 加一個 penalty $\lambda$ 值。 * 對於能否幫助 generalization 不太明顯,但依舊是一個方法。 * 這方法也是 maximum a posteriori learning 的一個形式。 * Dropout: 對於每個 neuron 加一個機率 p,在訓練時如果發生會直接停用這個 neuron,但是在實際使用模型時必須停用 dropout。 * 對於每個 minibatch,如果有 p 機率的 dropout,在輸出結果時需要多做一次除以 p。 * 這方法也可當成是在訓練時加入 noise。 ### Recurrent neural network(RNN) * 將之前訓練的結果往回接到前面的 layer,讓這些成果可以在新的 input 就有影響。 * Markov assumption: 每個 hidden state 都可以從之前的 input 取得足夠多的資料。 * 表示 Grediant 的式子有 recursive 的特性,因此也稱為 back-propagation through time。 * 其中包含了一個與 $w_{z,z}$ 成正比的項,如果這個值小於 1,可能會發生 vanishing gradient 的問題;如果這個值大於 1,則會發生 exploding gradient 的問題。 * ![](https://i.imgur.com/NuuLsbu.png) ## Chapter 24. Deep Learning for Natural Language Processing ### one-hot vector * 來表示目前的字詞,但是這個方法沒辦法描述各個字之間的相似度。 ### word-embedding * 這個方式可以讓模型學習各個字之間的相似度。 ![](https://i.imgur.com/0gN0td1.png) ### bidirectional RNN * 這個方法讓文字辨識時可以取得這個字左邊及右邊的文字。 ![](https://i.imgur.com/LcR7fIW.png) ### Attention * 讓模型學習每個字對於判別的重要性,在模型中會以機率的方式呈現。 * 同時這種機率也可以讓人更容易解釋為何模型會這樣判別。(interpretable) ### decoding -- beam search * 多緒平行選擇每一步的最適合字詞,並輸出最佳的字詞組合。 ### masked language models(MLM) * 將部分字詞刻意 mask 起來,要求模型可以預測這些字詞。 ## Chapter 25. Computer Vision * CV 中兩大問題分別是 reconstruction 和 recognition。也就是根據圖形內容重建出世界以及辨識出圖形內的物件。 ### pinhole camera * 針孔攝影機前端的開口就是光圈(Aperture) * focal length(焦距): 從針孔開口位置到 image plane 的距離 * 下圖中在場景中 $P$ 點的座標為 $(X,Y,Z)$,而在 image plane 上的 $P^\prime$ 點的座標為 $(x,y,z)$。 * 透過相似三角形可以得知 $\frac{-x}{f} = \frac{X}{Z}, \frac{-y}{f} = \frac{Y}{Z}$,因此 $x = \frac{-fX}{Z}, y = \frac{-fY}{Z}$。 * 這種成像方法也被稱為 image projection。隨著 $Z$ 越大(物件離鏡頭越遠),影像的大小也變小;而 $x$ 和 $y$ 的負號代表影像經過上下左右的顛倒。 * 針孔攝影機的問題是需要足夠小的光圈才能保持對焦。而過小的光圈會因為光線不足而讓影像暗;過大的光圈則有動態模糊的問題。 * 在焦點上產生的平面稱為 focal plane(焦平面),而在焦點附近可以產生足夠清晰影像的距離稱為 depth of field(景深)。 ![](https://i.imgur.com/w1mwipC.png) * 到鏡頭的光量會受到三個因素影響 1. 環境光的光強度 2. 物件是面光還是背光 3. 從物件反射到鏡頭內的光量 * 大多物件在反射光時會以漫反射(diffuse reflection)的方式將光反射回去;與漫反射相對地點則是鏡面反射(specular reflection)。 ### Edge * edge 是影像亮度有大幅度地改變的直線或曲線。 * 一個偵測 edge 的方式是 gaussian filter,設計一個特殊的 kernel 並透過 convolution 的方式找到 edge。 ## Chapter 22. Reinforcement Learning * agent 透過收到獎勵(reinforcement)來學習最佳的做法。 ### Action-utility learning * 一個 Q-learning 的 agent 會學習一個 action-utility function([Q-function](#Q-function)),在特定的 state 內做出最佳的 action。 * 而從對應的 state 到 action 的過程就是 policy,找到最佳的 policy 就是 policy search。 * 在 passive reinforcement learning 的狀況下,agent 的 policy $\pi$ 是固定的,也就是 action $\pi(s)$ 是固定的,而此時的 agent 要學習 utility function $U^\pi(s)$。 * enviornment history: 曾經經過的 state 和做過的 action 紀錄。 * 每次在一個 state $s$,因為做了 action $a$ 而到了 state $s^\prime$ 就會得到一個 reward $R(s, a, s^\prime)$。這個 reward 值可正可負,正值可以視為獎勵;而負值可以視為懲罰。 ### Bellman equation * 計算 utility 的一個式子,表示為 $U(s) = max_{a \in A(s)} \sum_{s^\prime} P(s^\prime | s, a) [R(s, a, s^\prime) + \gamma U(s^\prime)]$ ### Passive reinforcement learning * utility 在透過 policy $\pi$ 之下,定義為 reward 的加總期望值,也就是 $U^\pi(s) = E[\sum_{t = 0}^\infty \gamma^t R(S_t, \pi(S_t), S_{t+1})]$,其中 $\gamma$ 為 discount factor。 ### Temporal-difference learning * 這裡的 utility 的更新方法為 $U^\pi(s) \leftarrow U^\pi(s)+ \alpha[R(S_t, \pi(S_t), S_{t+1}) + \gamma U^\pi(s^\prime) - U^\pi(s)]$,其中 $\alpha$ 是 learning rate。而算式中使用到了之前 state 的資料,因此稱為 temporal difference。 ### Active reinforcement learning * 一個 active agent 要能自己決定當下要做哪個 action。 * agent 必須決定何時應該探索還沒走過的 state,以及何時應該使用目前已知的最佳 action。 * 定義一個很樂觀的 utility 估計值 $U^+(s) = max_a f(\sum_{s^\prime} P(s^\prime | s, a) [R(s, a, s^\prime) + \gamma U(s^\prime)], N(s, a))$,其中 $N(s, a)$ 為在 state $s$ 中嘗試 action $a$ 的個數,$f(u, n)$ 是 exploration function,用這個 function 決定應該如何做到探索和利用的 trade off。 ### Temporal-difference Q-learning * 學習方法是使用 Q-function $Q(s,a)$ 而不是之前提到的 $U(s)$,這個 function 定義為 $Q(s,a) = \sum_{s^\prime} P(s^\prime | s, a) [R(s, a, s^\prime) + \gamma \max_{a^\prime} Q(s^\prime, a^\prime)]$ * 而更新的方式為 $Q(s, a) \leftarrow Q(s, a)+ \alpha[R(S_t, \pi(S_t), S_{t+1}) + \gamma max_{a^\prime}Q(s^\prime, a^\prime) - Q(s, a)]$ --- ## 期末題目整理 - ==What is the main difference between CNN and RNN?== - CNN is suitable for spatial data like images. RNN is used for temporal data, also called sequential data. - What is overfitting? - Overfitting refers to the condition when the model completely fits the training data but fails to generalize the testing unseen data. - How can we reduce overfitting? Describe at least two tips. - k folds cross-validation - Regularization - Pruning - Dropout - Ensembling - Batch normalization - What strategies can apply to reduce overfitting when learning a decision tree? - **decision tree pruning** - build a full tree - find a test node - if irrelevant(only noise in data) --> replace with leaf node - What is the kernel trick in SVM. - 用kernel function(低維度的計算)在很高維的空間中有效率的找到optimal linear separator,這個結果map回低維度時,可能會對應到一個扭曲非線性的boundary. - Describe the idea of ensemble learning. - The idea of ensemble learning is to select a collection, or ensemble, of hypotheses from the hypothesis space and combine their predictions. - Describe the idea of random forest. - The key idea is randomly vary the *attribute choices*. At each split point in constructing the tree, select a random sampling of attributes, and then compute which of those gives the highest information gain. > [reference](https://hackmd.io/@z7JYTVLASYW2vkTkIXf0Kg/S1PwhZPtj) > [name=王承揚] ###### tags: `1111_courses` `intro_to_AI`