• 文章總列表
  • 統計分析
    • R SAS All
      R

      [R]散佈圖與相…

      2019-12-31

      R

      [R]Logis…

      2019-10-31

      R

      [SAS][R]…

      2019-09-27

      R

      [R]Chi-s…

      2019-09-19

      SAS

      [SAS] Ma…

      2026-01-21

      SAS

      [SAS]傾向分…

      2020-10-28

      SAS

      [SAS]Log…

      2020-06-10

      SAS

      [SAS]迴歸分…

      2020-02-28

      統計分析

      [SAS] Ma…

      2026-01-21

      統計分析

      什麼是meta-…

      2024-11-05

      統計分析

      Test-ret…

      2024-06-07

      統計分析

      [SAS]傾向分…

      2020-10-28

  • SAS
    • SAS

      [SAS] Ma…

      2026-01-21

      SAS

      [SAS]傾向分…

      2020-10-28

      SAS

      [SAS]Log…

      2020-06-10

      SAS

      [SAS]迴歸分…

      2020-02-28

      SAS

      [SAS]線性迴…

      2020-02-26

  • R
    • R

      [R]散佈圖與相…

      2019-12-31

      R

      [R]Logis…

      2019-10-31

      R

      [SAS][R]…

      2019-09-27

      R

      [R]Chi-s…

      2019-09-19

      R

      [SAS][R]…

      2019-07-08

  • 機器學習
    • 機器學習

      Unsuperv…

      2021-07-22

      機器學習

      Unsuperv…

      2021-07-12

      機器學習

      Unsuperv…

      2021-05-20

      機器學習

      Unsuperv…

      2021-05-12

      機器學習

      Matrix F…

      2021-04-30

  • 閱讀筆記
    • 閱讀筆記

      [閱讀心得 #2…

      2025-02-05

      閱讀筆記

      [閱讀心得#20…

      2024-10-25

      閱讀筆記

      [閱讀心得#19…

      2024-08-16

      閱讀筆記

      [閱讀心得#18…

      2024-05-10

      閱讀筆記

      [閱讀心得#17…

      2022-01-22

Wenwu's blog
wenwu's blog
  • 請我喝珍奶

Popular Posts

[R]散佈圖...

2019-12-31

[SAS]L...

2020-06-10

[SAS][...

2019-07-08

[R]Log...

2019-10-31

[SAS] ...

2020-01-22

[SAS]線...

2020-02-26

[SAS]存...

2019-12-18

[SAS]迴...

2020-02-28
機器學習

Matrix Factorization 矩陣分解

by wenwu 2021-04-30

Matrix Factorization 矩陣分解

今日的課程來自於: https://youtu.be/iwh5o_M4BNU?t=4670

本文來介紹矩陣分解的方法。通常我們在尋找兩個變項的關係,而他們之間可能受到某種潛在因素(latent factor)的控制,但是我們通常無法直接知道latent factor是甚麼。

比方,我們可以描述購買者和公仔的屬性,如果這個人與某公仔是match的,他們的vector很像(內積值很大),這個人就很容易買這個公仔

但是! 現實是,我們沒辦法知道購買著與公仔的屬性為何? 所以沒有辦法直接使用latent factor

所以我們可以把每個人的屬性用vector r^A ~ r^E表示,而公仔的屬性是r¹、r²、r³、r⁴ 表示,購買的數量可以用 matrix X表示,X裡面每個元素,都是每個人購買的公仔數量

比方: r^A.r¹ ≈5,表示r^A和r¹的屬性比較貼近

從上圖可以看到 Matrix X ≈ 購買者矩陣(M*K) . 公仔矩陣(K*M)
但是我們不知道K的數量,K= latent factor的數量;這部分需要我們調整

所以我們的目標是使用SVD的訪法,找出兩個矩陣的解(購買者矩陣、公仔矩陣),使兩個矩陣相乘的結果與Matirx X越接近越好


Matrix X 的未知數

有時候,Matrix X可能有missing 的,這時候就難以用SVD精準描述,但是我們可以用gradient descent 來求解,首先寫出loss function

其中 r^i 值的是購買者背後的latent factor, r^j 指的是公仔背後的latent factor,我們要讓這兩個vector的內積與實際購買該公仔的數量n_ij越接近越好,這個方法的關鍵之處在於,計算上式時,可以跳過missing的數據,最終通過gradient descent求得和的值

假設latent factor的數目等於2,則購買者的屬性和公仔的屬性都是2維的vector,這裡實際進行計算後,把屬性中較大值標註出來,可以發現:

  • 購買者:A、B屬於同一組屬性,C、D、E屬於同一組屬性
  • 動漫角色:1、2屬於同一組屬性,3、4屬於同一組屬性
  • 結合動漫角色,可以分析出動漫角色的第一個維度是天然呆屬性,第二個維度是傲嬌屬性
  • 接下來就可以預測未知的值,只需要將人和動漫角色的vector做內積即可
    這也是推薦系統的常用方法

這也是推薦系統常用的方法


more about matrix factorization

除了購買者與公仔之間的關係之外,也有可能存在其他的因素控制購買數量的數值,我們可以將公式更精確的改成:

其中,b_A表示A這個人本身有多喜歡買公仔,b_1是這個公仔有多讓人想購買,這些內容跟屬性vector無關的,此時loss function被寫成:

當然我們也可以加上regulatization去對結果作約束,上面的loss function可使用gradient descent 解

2021-04-30 0 comment
0 FacebookTwitterPinterestEmail
機器學習

Unsupervised Learning: PCA

by wenwu 2021-04-16

Unsupervised Learning: PCA

非監督式學習: 主成分分析(Principal components analysis,PCA)

上篇提到PCA是降維的一種方法,他的input x和output z之間是linear transform,即z=Wx,PCA要做的,就是根據x把W給找出來(z未知)

今日的課程來自於: https://youtu.be/CXgbekl66jc 

PCA for 1-D

為了簡化問題,這裡我們假設z是1維的vector,也就是把x投影到一維空間,此時w是一個row vector : z_1=w¹.x ,其中w¹表示w的第一個row vector,假設w¹的長度為1,即||w¹||_2=1,此時z_1就是x在w¹方向上的投影

基本上,就是將二維的x,投影到一維的z,並且符合z_1=w¹.x
那我們要找甚麼樣的w¹呢?

  • 我們希望找到一個projection的方向,他可以讓projection後的variance越大越好
  • 我們不希望projection使這些data point 通通擠在一起,導致點和點之間的資訊消失
  • 其中,variance的計算公式: Var(z_1)=1/N Σ(z_1-mean(z_1))²,||w¹||_2 = 1

PCA for n-D

當然不只投影到一維空間,還可以投影到更高維的空間

同樣也滿足,z=Wx。只不過 z = z1、z2、….. ,而W也是,並且W 是一個正交矩陣(orthogonal matrix)

找到的w¹必須讓var(z_1)最大,而w²在不等於w¹的情況下,同樣要使var(z_2)最大


Lagrange multiplier

基本上可以使用現有的函數計算,這邊介紹Lagrange multiplier求解PCA的結論

  • w¹ 是S=Cov(x)這個matrix的特徵向量,對應最大的特徵值λ_1
  • 在算w²時,多了w¹一個條件,就是w¹與w²必須正交,也就是w²也是S=Cov(x)這個matrix的特徵向量,對應最大第二特徵值λ_2

PCA-decorrelation

z=W.x
神奇之處在於cov(z)=D,即z的covariance是一個diagonal matrix
PCA可以讓不同dimension之間的covariance變為0,即不同new feature之間是沒有correlation的,這樣做的好處是,減少feature之間的關係從而減少model所需的參數量
如果你把原來的input data通過PCA之後再給其他model使用,那這些model就可以使用簡單的形式,而無需考慮不同dimension之間類似這些交叉項,此時model得到簡化,參數量大大降低,相同的data量可以得到更好的訓練結果,從而可以避免overfitting的發生


Reconstruction Component

假設我們現在考慮是手寫數字識別,這些數字是由一些類似於筆畫的basic component 組成,就是把每個筆畫寫成vector,記成u_1\u_2 … ,以MNIST為例,不同的筆畫都是一個28*28的vector,把某些vector加起來,就組成一個28*28的digit

可以寫成 x≈c_1 * u¹ + c_2 * u²+c_3 * u³+ ….. +x̄

x代表某張digit image的pixel,他等於k個component 的加權和加上所有image的平均值(x̄)

以上圖為例,7就是 x=u¹+u³+u⁵ ,我們可以用[c_1,c_2,c_3,c_4,c_5]^T 來表示一張digit image,如果component的數目k 遠比pixel的數目小,那這個描述是有效的

實際上我們不知道 u¹ ~ u^k 的具體值,因此我們要找到這樣 k個vector,使得 x-x̄ 與 x ^( x 的預估值) 越接近越好

而且用未知component來描述的這部分內容,叫做Reconstruction error ,即|| (x-x̄) – x^ || ,接下來我們去找 k個 vector 去minimize這個error:

回顧 PCA ,z=W.x ,實際上我們通過PCA最終解得到的{w¹,w²,…. w^k }就使reconstruction error 最小化的{u¹,u²,… u^k }


NN for PCA

現在我們已經知道,PCA找出的{w¹,w²,…. w^k }就是k個component{u¹,u²,… u^k },並且{w¹,w²,…. w^k }這k個vector是標準正交化的(orthonormal),因此:

這時候我們可以使用神經網路(NN)來表示整個過程,假設x是三維向量,要投影到k=2維的component上:

  • x-x̄與w^k做inner product的過程類似於neural network,x-x̄在3維空間上的座標就相當於是neuron 的input ,而w¹,w²,w³就是weight,而c_1是neuron的output
  • 得到c_1之後,再乘上w¹,得到 x^的一部分
  • 對c_2進行同樣的操作,乘上w²,貢獻x^的剩餘部分,此時我們已經完整計算出x^三個分量的值
  • 此時,PCA就被表示成了只含一層hidden layer的神經網絡,且這個hidden layer是線性的激活函數,訓練目標是讓這個NN的input x-x̄ 與output x^ 越接近越好,這件事就叫做Autoencoder
  • 注意,通過PCA求解出的與直接對上述的神經網絡做梯度下降所解得的是會不一樣的,因為PCA解出的是相互垂直的(orgonormal),而用NN的方式得到的解無法保證相互垂直,NN無法做到Reconstruction error比PCA小,因此:在linear 的情況下,直接用PCA找W遠比用神經網路的方式還快速。NN的好處是他不只一層,可以做deep autoencoder

Weakness of PCA

PCA有很明顯的弱點:

  • 它是unsupervised的,如果我們要將下圖綠色的點投影到一維空間上,PCA給出的從左上到右下的劃分很有可能使原本屬於藍色和橙色的兩個class的點被merge在一起
    而LDA則是考慮了labeled data之後進行降維的一種方式,但屬於supervised
  • 它是linear的,對於下圖中的彩色曲面,我們期望把它平鋪拉直進行降維,但這是一個non-linear的投影轉換,PCA無法做到這件事情,PCA只能做到把這個曲面打扁壓在平面上,類似下圖,而無法把它拉開

對類似曲面空間的降維投影,需要用到non-linear transformation


PCA for MNIST

再次回到手寫數字識別的問題上來,這個時候我們就可以熟練地把一張數字圖像用多個組件(維度)表示出來了:

這裡的w^i 就表示降維後的其中一個維度,同時也是一個組件,它是由原先28×28維進行加權求和的結果,因此w^i也是一張28×28的圖像,下圖列出了通過PCA得到的前30個組件的形狀:
注:PCA就是求的前30個最大的特徵值對應的特徵向量


PCA for Face

同理,通過PCA找出人臉的前30個組件(維度),如下圖所示:
用這些臉的組件做線性組合就可以得到所有的臉

在對MNIST和Face的PCA結果展示的時候,你可能會注意到我們找到的組件好像並不算是組件,比如MNIST找到的幾乎是完整的數字雛形,而Face找到的也幾乎是完整的人臉雛形,但我們預期的組件不應該是類似於橫折撇捺,眼睛鼻子眉毛這些嗎?
如果你仔細思考了PCA的特性,就會發現得到這個結果是可能的注意到linear combination的weight 可以是正的也可以是負的,因此我們可以通過把組件進行相加或相減來獲得目標圖像,這會導致你找出來的component不是基礎的組件,但是通過這些組件的加加減減肯定可以獲得基礎的組件元素


NMF

Introduction

如果你要一開始就得到類似筆劃這樣的基礎組件,就要使用NMF(non-negative matrix factorization),非負矩陣分解的方法
PCA可以看成對原始矩陣做SVD進行矩陣分解,但並不保證分解後矩陣的正負,實際上當進行圖像處理時,如果部分組件的matrix包含一些負值的話,如何處理負的像素值也會成為一個問題(可以做歸一化處理,但比較麻煩)
而NMF的基本精神是,強迫使所有組件和它的加權值都必須是正的,也就是說所有圖像都必須由組件

在MNIST數據集上,通過NMF找到的前30個組件如下圖所示,可以發現這些組件都是由基礎的筆劃構成,如果應用在臉部辨別的話也是

2021-04-16 0 comment
0 FacebookTwitterPinterestEmail
閱讀筆記

[閱讀心得#5]加速你的FIRE人生

by wenwu 2021-04-12

加速你的FIRE人生

第一次知道FIRE 是在 Yale Chen 的頻道,我必須說我一開始也不喜歡他的語氣,不過發現他講話是有內容的,所以才繼續追蹤下去

FIRE 是什麼呢?FIRE 是就 Financial Independent Retire Early 的縮寫,就是提早達到財富自由。Yale本身就是FIRE族,而且他26歲就達到財富自由了。

我覺得蠻驚人的,達到財富自由,是不是代表需要非常非常多得錢。

說實話,如果我們的慾望很大,絕對沒有足夠的錢讓我們花一輩子
在這本書裡面並沒有投資的完全攻略,讀完只會讓你開始執行FIRE人生


能不能退休,在於你的存款比例

如果你一個月賺一百萬,但是你每個月全部花光,那你比一個薪水兩萬六每個月存6000塊的社會新鮮人還要窮!

依照存款退休表,假設你一個月存50%的薪水,那你17 年後就可以退休了。如果現在你25歲,代表42歲就能退休

你的財富自由數字

還有另一種方法,不過需要先算出你需要存多少錢

你的FU數字=年支出*25

假設你的月支出為2萬,代表FU=2*12*25=600萬。當你達到FU數字,你每年只要提領4%來過生活,你的錢就花不完了

4%法則

Yale 說他在頻道沒有詳細解釋4%法則,但是在書裡有一個section是在介紹4%法則,這裡不多敘述,大家買書來看

寫給20歲的自己

Yale的書很容易可以懂,因為他想要讓20歲的自己也能夠明白,

  1. 算出自己的FU數字
  2. 決定每個月要投資的金額
  3. 開投資卷商的戶頭(建議Firstrade/TD Ameritrade)
  4. 考慮買什麼資產
    可以選擇穩定、低費用的大盤指數
    挑選兩個指數型ETF,75%是股票ETF,25%是在債券ETF
  5. 拿到股息,申請股息再投入計畫

地理駭客

我知道這個概念,但是這是我第一次聽到他的名稱。如果你可以將高幣值國家的錢轉到較低幣值國家去花,就可以瞬間提高生活品質,也可以存到比較多的錢


寫了幾點印像比較深刻的內容與大家分享,我目前沒有任何的投資組合,不過看完Yale的書,我的目標是這個月就要開始行動!

如果你對FIRE也有興趣,我很推薦去買來看看!加速我的FIRE人生

2021-04-12 0 comment
0 FacebookTwitterPinterestEmail
閱讀筆記

[閱讀心得#4] 也許你該找人聊聊 Maybe you should talk to someone

by wenwu 2021-03-22

也許你該找人聊聊 Maybe you should talk to someone

看完這本書實在太過癮了,本書有四個部分共有58節,看完就像做完完整的58節的心理諮詢,心裡滿滿的,好滿足。

這本書的作者是一位心理師,內容就是四位病人與他諮詢的過程,加上他看心理醫師的過程。其實我們每個人所遇到的環境都不太一樣,但是卡在心理的節都很像,往往都是不願意面對 ; 如果你有什麼過不去的關,想試試看心理諮詢,卻又對心理諮詢完全沒有概念,我覺得這本書會帶你了解心理諮詢的過程。或者你裡面帶著什麼關,讀完這本書說不定也有你想要的答案

作者待過電視圈,將他自己的故事與四位病人的故事串連在一起,一節一節有不同的重點,也加入心理學的知識,串連出一整段完整的故事。


要的速度 (chapter 36)

the speed of want

在諮詢時有許多病人希望可以短暫的得到解決,希望能夠用四次的心理諮詢能夠解決問題。作者在受訓的時候,過著緊湊的節奏,就為著趕快受訓結束,能夠成為獨當一面的心理師。受訓的地點在地下室,每天見不到日光,生活苦,卻告訴自己:謝天謝地,我們知道這個階段只是暫時的。

我在讀研究所時,也告訴自己,這是暫時的。兩年內我就會讀完研究所,我就可以拿到學位,就可以做自己想要的事情。

不過腳步越快,看到的越少,因為什麼東西都糊成一團。但是今天不會回來。現代人以為做事不快是損失時間,可是除了殺時間以外,他們並不懂得怎麼運用省下來的時間。

要是想要還是需要?

許多人想要『盡快解決』他們的問題,他們想要在限定時間解決他們找伴侶的問題,趕在情人節之前解決,不過這只是『想要』

來心理諮詢的病人多半都為寂寞所苦,他們渴望、但缺少強韌的人際連結 — 這種要是『需要』的要。

『刺激和回應之間有空間,空間裡是我們選擇回應方式的權利,回應方式裡有我們的成長和自由』 — 維克多・法蘭克 (Viktor Frankl)

今天不會回來…


逗號(chapter 48)

A pause in the conversaion

在書的最後一章,用逗號結束。心理諮商最奇怪的部分是:他是圍繞著結束來安排的。

病人往往感謝心理師帶他們完成一段旅程。不過這都是靠自己,沒有人會救你,除了你自己。人是在與他人的連結裡成長的。

約翰發現好的影集有一個特色:觀眾會覺得每一集之間只是逗號。同樣兩次晤談之間也是逗號。

生命中的關係不會真正結束,即使你再也見不到那個人。
關係親的人會繼續待在你心裡某個地方。
你過去的情人、你的父母、你的朋友、活著的、(象徵上或實際上)逝去的─全都會喚起你的回憶,不論你有沒有察覺。
他們時常讓你看見你如何與自己和他人互動,有時候是你在心中與他們對話,有時候是他們在你夢裡對你說話


最後

除了這兩點之外,我還有很多喜歡的部分,像是作者自己描述她懷孕的過程(他沒有結婚)。還有剛結婚卻發現自己癌症末期的病人:茱莉,過程中如何接受死亡(我每次看都大哭)。還有想在70歲之前人生沒有人和改善就要自殺的麗塔。當然還有自戀傾向的好萊屋製片約翰。

每個人的故事是如此截然不同,卻也環繞著我們對待生命的角度。怎麼面對我們的錯誤,並且擁抱他。

五星推薦這本書,這本書你需要自己體驗,也許你該找人聊聊 Maybe you should talk to someone

2021-03-22 0 comment
0 FacebookTwitterPinterestEmail
機器學習

無監督式學習Unsupervised Learning- Introduction

by wenwu 2021-03-17

無監督式學習Unsupervised Learning- Introduction

今日的課程來自於: https://youtu.be/CXgbekl66jc

在實務上,我們都沒有完整的資料,接下來的內容都是無監督式學習
本篇為無監督式學習的介紹


無監督式學習可以分成兩種 ,通常我們沒有完整label的資料

  • 化繁為簡 : Clustering(聚類) /Dimension Reduction(降維)
    將複雜的input 變成簡單的output,比如把一大堆沒有打上label的樹圖片轉變為一棵抽象的樹,此時training data只有input,而沒有output
  • 無中生有(Generation) 
    無中生有就是隨機給function一個數字,它就會生成不同的圖像,此時training data沒有input,而只有output

Clustering

clustering,顧名思義,就是把相近的樣本分成同一類,比如將沒有label的影像分類,手動標上標籤,這分類過程就是化繁為簡的過程

那…我們要分幾組呢? 
選擇適當的cluster,要empirical的來決定它

K-means 

最常用的就是K-means :

  • 將一堆沒有標籤的資料,將他們分成K個cluster
  • 每一個cluster都要找一個center,初始值可以從training data 裡隨機挑K個object X^n出來做K個center c^i 的初始值
  • 之後的值找出最靠近的cluster,將他分類
  • 更新center: 把每個cluster裡的所有object取平均值作為新的center值
  • 反覆以上動作

如果不是從原先的data set 裡取center 的初始值,可能會導致部分cluster沒有樣本點


HAC (Hierarchical Agglomerative Clustering)層次聚類 

假設我們現在有五個樣本點,想要做clustering:

  • bulid a tree: 
    建立類似Huffman Tree,只不過huffman 是依據詞頻,而HAC是依據相似度建樹
    將五個樣本點兩兩計算相似度,挑出最相似的一對,重複以上動作,直到只剩下一個root 節點
  • pick a threshold 
    選threshold,就是在構造好的tree上橫著切一刀,相連的結點屬於同一個cluster,下圖中,不同顏色的橫線和葉結點上不同顏色的方框對應著切法與cluster的分法

HAC和K-means最大的區別在於如何決定cluster的數量,在K-means裡,K的值是要你直接決定的;而
在HAC裡,你並不需要直接決定分多少cluster,而是去決定這一刀切在樹的哪裡


Dimension Reduction

clustering的缺點就是每一個object都要屬於一個類別,一定要分類一個類別但是物件可能有多種屬性,如果硬分類,就會失去很多信息;我們應該用一個vector來描述該object,這個vector的每一維都代表object的某種屬
性,這種做法就叫做Distributed Representation,或者說,Dimension Reduction

Why Dimension Reduction Help? 

接下來要來看為什麼Dimension Reduction 可能是有用的

假設data為下圖左側中的3D螺旋式分布,你會發現用3D的空間來描述這些data很浪費空間,因為我們可以完全把它攤平,此時只需要用2D的空間可以描述這個3D信息

舉一個極端的例子,下面這幾張表示“3”的image,我們完全可以用中間這張image旋轉角度來描述,也就是說,我們只需要用這一個dimension就可以描述原先28*28 dimension的圖像
你只要抓住角度的變化就可以知道28維空間中的變化,只要用一維就可以描述這個image


How to do Dimension Reduction? 

在Dimension Reduction裡,我們要找一個function,這個function的input是原始的x,output是經過降維之後的z。dim(z)<dim(x)

最簡單的方法是Feature Selection,即直接從原有的dimension裡拿掉一些直觀上就對結果沒有影響的dimension,就做到了降維。

最常見的方法叫做PCA(Principe Component Analysis),下一篇會提到

2021-03-17 0 comment
0 FacebookTwitterPinterestEmail
機器學習

Semi-supervised Learning (半監督式學習)

by wenwu 2021-03-03

Semi-supervised Learning (半監督式學習)

今日的課程來自於: https://youtu.be/fX_guE7JNnY

所謂的半監督式學習,就是我們有部分的資料是沒有label的,這也接近我們實務上操作的資料
通常遇到的情況,是沒有label的資料遠大於有label的資料。(我們從不缺data,缺的是有label的data,就像可以拍很多照片,但他們是沒有標籤的)

Semi-supervised Learning 可以分成兩種情況:

  • Transductive Learning: unlabeled data is the testing data 
    使用testing data 的 feature,但是不使用testing data的label
  • Inductive Learning: unlabeled data is not the testing data
    就是完全不考慮testing data

要選擇使用哪一種方法,取決於是否已經有testing set

Semi-supervised Learning 的使用unable data往往伴隨著假設,而假設的合理與否,決定了結果的好壞程度


Outline

  1. Semi-supervised Learning for Generative Model
  2. Low-density Separation Assumption
  3. Smoothness Assumption
  4. Better Representation

Semi-supervised Learning for Generative Model

在監督學習中,我們討論過機率生成模型了,所以可以算出class 1 & class 2 的分佈分別為何,再根據貝氏公式得到新的x 的類別。不過在半監督學習中,unlabeled data會影響最終的決定,劃分兩個class的decision boundary也會隨之變化,(會影響posterior probability,也會影響decision boundary)

因此,在計算上就會有些調整(x^u為unlabeled data)

  • 先初始化一組參數: θ = {P(C1),P(C2),u¹,u², ∑}
  • Step 1: 利用初始model計算每一筆unlabeled data x^u 屬於 class 1 的機率Pθ(C1|x^u)
  • Step 2: update model 
    因為考慮unlabeled data,分子還要加上所有unlabeled data屬於class 1 機率和
  • 平均數則要增加機率對於x^u求和在歸一化的結果即可
  • 剩下的參數同理,接下來就有一組新的參數θ’,於是就回到step 1 →step 2→step1
  • 理論上這個方法是可以收斂的,並且一開始的θ會影響收斂的結果,類似於gradient descent
  • 上述的step1 就是EM algorithm裡的E ,step2 為M

以上的推導基於的基本思想是,把未標記的數據看成是可以劃分的,一部分屬於C1,一部分屬於C2
也就是C1的先驗概率乘上C1這個class產生的概率+C2的先驗機率乘上C2這個類別產生的機率
實際上我們在利用極大似然函數更新參數的時候,就利用了該分段的結果:


Low-density separation Assumption

接下來介紹一種新的方法,它基於的假設是Low-density separation
通俗來講,就是這個世界是非黑即白的,在兩個class的交界處data的密度(density)是很低的,它們之間會有一道明顯的鴻溝,此時unlabeled data(下圖綠色的點)就是幫助你在原本正確的基礎上挑一條更好的boundary

Self Training

low-density separation最具代表性也最簡單的方法是self training

  • 先從labeled data去訓練一個model f*,訓練方式沒有限制
  • 然後用f*該去對unlabeled data打上label, ,也叫作pseudo label
  • 從unlabeled data中拿出一些data加到labeled data裡,至於data的選取需要你自己設計算法來挑選
  • 回頭再去訓練,循環即可

注:該方法對Regression是不適用的

實際上,該方法與之前提到的generative model還是挺像的,區別在於:

  • Self Training使用的是hard label:假設一筆data強制屬於某個class
  • Generative Model使用的是soft label:假設一筆data可以按照概率劃分,不同部分屬於不同class

可以看到,在neural network裡使用soft label是沒有用的,因為把原始的model裡的某個點丟回去重新訓練,得到的依舊是同一組參數,實際上low density separation就是通過強制分類來提升分類效果的方法

Entropy-based Regularization

該方法是low-density separation的進階版,你可能會覺得hard label這種直接強制性打標籤的方式有些太武斷了,而entropy-based regularization則做了相應的改進: y^u=f*_θ*(x^u),其中y^u是一個概率分布(distribution)

由於我們不知道unlabeled data 的label到底是什麼,但如果通過entropy-based regularization得到的分佈集中在某個class上的話,那這個model就是好的,而如果分佈是比較分散的,那這個model就是不好的,如下圖所示:

接下來的問題是,如何用數值的方法來evaluate distribution的集中(好壞)與否,要用到的方法叫entropy,一個distribution的entropy可以告訴你它的集中程度:

對上圖中的第1、2種情況,算出的E(y^u)=0,而第3種情況,算出的E(y^u)=ln(5),可見entropy越大,distribution就越分散,entropy越小,distribution就越集中
因此我們的目標是在labeled data上分類要正確,在unlabeled data上,output的entropy要越小越好,此時就要修改loss function

  • 對labeled data來說,它的output要跟正確的label越接近越好,用cross entropy表示如下:
  • 對unlabeled data來說,要使得該distribution(也就是output)的entropy越小越好:
  • 兩項綜合起來,可以用weight來加權,以決定哪個部分更為重要一些

可以發現該式長得很像regularization,這也就是entropy regularization的名稱由來

semi-supervised SVM

SVM要做的是,給你兩個class的data,去找一個boundary:

  • 要有最大的margin,讓這兩個class分的越開越好
  • 要有最小的分類錯誤

對unlabeled data窮舉所有可能的label,下圖中列舉了三種可能的情況;然後對每一種可能的結果都去算SVM,再找出可以讓margin最大,同時又minimize error的那種情況,下圖中是用黑色方框標註的情況

當然這麼做會存在一個問題,對於n筆unlabeled data,意味著即使在二元分類裡也有種可能的情況,數據量大的時候,幾乎難以窮舉完畢,上面給出的paper提出了一種approximate的方法,基本精神是:一開始你先得到一些label,然後每次改一筆unlabeled data的label,看看可不可以讓你的objective function變大,如果變大就去改變該label。


Smoothness Assumption

concepts

smoothness assumption的基本精神就是將兩個點可以在樣本高密度集中分布的區域有一條可連結的路徑,即connected by a high density path

精準的定義是:

  • x的分布是不均勻的(有些地方集中,有些又分散)
  • 如果x¹ 和 x² 在一個high density region 上很接近的話,那麼 ŷ¹ 和 ŷ² 就是相同的

假設下圖是data的分布,x¹, x², x³ 是其中的三筆data,如果單純的看x的相似度,顯然x²和 x³ 的距離比較近一些,但對於smoothness assumption 來說,x¹ 和 x² 是處於同一個區域的,他們之間有一條相連的路徑

digits detection

以手寫數字識別為例,對於最右側的2和3以及最左側的2,顯然最右側的2和3在pixel上相似度更高一些;但如果把所有連續變化的2都放進來,就會產生一種“不直接相連的相似”,根據Smoothness Assumption的理論,由於2之間有連續過渡的形態,因此第一個2和最後一個2是比較像的,而最右側2
和3之間由於沒有過渡的data,因此它們是比較不像的

人臉的過渡數據也同理

file classification

Smoothness Assumption在文件分類上是非常有用的

假設對天文學(astronomy)和旅行(travel)的文章進行分類,它們各自有專屬的詞彙,此時如果 unlabeled data與label data的詞彙是相同或重合(overlap)的,那麼就很容易分類;但在真實的情況下,unlabeled data和labeled data之間可能沒有任何重複的words,因為世界上的詞彙太多了,
sparse的分佈很難會使overlap發生

但如果unlabeled data足夠多,就會以一種相似傳遞的形式,建立起文檔之間相似的橋樑

Graph-based Approach

之前講的是比較直覺的做法,接下來引入Graph Structure來表達connected by a high density path這件事

我們把所有的data points都建成一個graph,有時候建立vertex之間的關係是比較容易的,比如網頁之間的鏈接關係、論文之間的引用關係;但有時候需要你自己去尋找vertex之間的關係

graph的好壞,對結果起著至關重要的影響,而如何build graph卻是一件heuristic的事情,需要憑著經驗和直覺來做

  • 首先定義兩個object 之間的相似度 s(x^i, x^j)
    如果是基於pixel的相似度,performance可能會不太好;建議使用autoencoder提取出來的feature來計算相似度,得到的performance會好一些
  • 算完相似度後,就可以建graph了,方式有很多種:
    k nearest neighbor:假設k=3,則每個point與相似度最接近的3個點相連
    e-neighborhood:每個point與相似度超過某個特定threshold e的點相連
  • 除此之外,還可以給Edge特定的weight,讓它與相似度s(x^i, x^j)成正比
    1. 建議用RBM function來確定相似度,這裡均為vector,計算它們的Euclidean Distance(歐幾里得距離),加上參數後再去exponential
    2. 至於加exponential,經驗上來說通常是可以幫助提升performance的,在這裡只有當x^i, x^j非常接近的時候,singularity才會大;只要距離稍微遠一點,singularity就會下降得很快,變得很小
    3. 使用exponential的RBM function可以做到只有非常近的兩個點才能相連,稍微遠一點就無法相連的效果,避免了下圖中跨區域相連的情況

graph-based approach的基本精神是,在graph上已經有一些labeled data,那麼跟它們相連的point,屬於同一類的概率就會上升,每一筆data都會去影響它的鄰居,而graph帶來的最重要的好處是,這個影響是會隨著edges傳遞出去的,即使有些點並沒有真的跟labeled data相連,也可以被傳遞到相應的屬性

比如下圖中,如果graph建的足夠好,那麼兩個被分別label為藍色和紅色的點就可以傳遞完兩張完整的圖;從中我們也可以看出,如果想要讓這種方法生效,收集到的data一定要足夠多,否則可能傳遞到一半,graph就斷掉了,information的傳遞就失效了

介紹完瞭如何定性使用graph,接下來介紹一下如何定量使用graph

定量的使用方式是定義label的smoothness,下圖中,edge上的數字是weight, x^i 表達data, y^i 表示data的label,計算smoothness的方式為:

我們期望smooth的值越小越好

當然上面的式子還可以化簡,如果把labeled data和unlabeled data的y組成一個(R+U)-dim vector,即 y=[… y^i … y^j]^T

於是smooth可以改寫為:

其中L為(R+U)×(R+U) matrix,成為Graph Laplacian, 定義為L=D-W

  • W:把data point兩兩之間weight的關係建成matrix,代表了x^i與x^j之間的weight值
  • D:把W的每一個row上的值加起來放在該行對應的diagonal上即可,比如5=2+3,3=2+1,…

對S=y^TLy 來說,y是label,是neural network的output,取決於neural network的parameters,因此要在原來僅針對labeled data的loss function中加上這一項,得到:

λS實際上也是一個 regularization term
訓練目標:

  • labeled data的cross entropy越小越好(neural network的output跟真正的label越接近越好)
  • smooth S越小越好(neural network的output,不管是labeled還是unlabeled,都要符合Smoothness Assumption的假設)

具體訓練的時候,不一定只局限於neural network的output要smooth,可以對中間任意一個hidden layer加上smooth的限制


Better Representation

Better Representation的精神是,去蕪存菁,化繁為簡

我們觀察到的世界是比較複雜的,而在它的背後其實是有一些比較簡單的東西,在操控著這個複雜的世界,所以只要你能夠看透這個世界的假象,直指它的核心的話,就可以讓training變得比較容易

舉一個例子,在神鵰俠侶中,楊過要在三招之內剪掉樊一翁的鬍子,雖然鬍子的變化是比較複雜的,但頭的變化是有限的,楊過看透了這一件事情就可以把鬍子剪掉。在這個例子中,樊一翁的鬍子就是original representation,而他的頭就是你要找的better representation

算法具體思路和內容到unsupervised learning的時候再介紹

2021-03-03 0 comment
0 FacebookTwitterPinterestEmail
Load More Posts

近期文章

  • [SAS] Macro Language 基礎內容
  • ccClub 讀書會推薦,免費學python
  • [閱讀心得 #21]你願意,人生就會值得
  • 理想生活,該長怎麼樣子?
  • 多益330 → 多益785 多益成績棕色到藍色證書

近期留言

  • 「peter」於〈多益330 → 多益785 多益成績棕色到藍色證書〉發佈留言
  • 「wenwu」於〈[SAS]存活分析(2) COX regression model〉發佈留言
  • 「joey53111」於〈Statistical Programmer在CRO工作一年的心得〉發佈留言
  • 「丁柏仁」於〈Statistical Programmer在CRO工作一年的心得〉發佈留言
  • 「peter」於〈Statistical Programmer在CRO工作一年的心得〉發佈留言

免費訂閱

不定期更新文章,點一下追蹤就能夠收到最新文章!

一起加入其他 19 位訂閱者的行列

Statistics

  • 11,162
  • 592,845
  • 73
R 線上課程參考

@2019 - All Right Reserved. Designed and Developed by PenciDesign

Wenwu's blog
  • 文章總列表
  • 統計分析
    • R SAS All
      R

      [R]散佈圖與相…

      2019-12-31

      R

      [R]Logis…

      2019-10-31

      R

      [SAS][R]…

      2019-09-27

      R

      [R]Chi-s…

      2019-09-19

      SAS

      [SAS] Ma…

      2026-01-21

      SAS

      [SAS]傾向分…

      2020-10-28

      SAS

      [SAS]Log…

      2020-06-10

      SAS

      [SAS]迴歸分…

      2020-02-28

      統計分析

      [SAS] Ma…

      2026-01-21

      統計分析

      什麼是meta-…

      2024-11-05

      統計分析

      Test-ret…

      2024-06-07

      統計分析

      [SAS]傾向分…

      2020-10-28

  • SAS
    • SAS

      [SAS] Ma…

      2026-01-21

      SAS

      [SAS]傾向分…

      2020-10-28

      SAS

      [SAS]Log…

      2020-06-10

      SAS

      [SAS]迴歸分…

      2020-02-28

      SAS

      [SAS]線性迴…

      2020-02-26

  • R
    • R

      [R]散佈圖與相…

      2019-12-31

      R

      [R]Logis…

      2019-10-31

      R

      [SAS][R]…

      2019-09-27

      R

      [R]Chi-s…

      2019-09-19

      R

      [SAS][R]…

      2019-07-08

  • 機器學習
    • 機器學習

      Unsuperv…

      2021-07-22

      機器學習

      Unsuperv…

      2021-07-12

      機器學習

      Unsuperv…

      2021-05-20

      機器學習

      Unsuperv…

      2021-05-12

      機器學習

      Matrix F…

      2021-04-30

  • 閱讀筆記
    • 閱讀筆記

      [閱讀心得 #2…

      2025-02-05

      閱讀筆記

      [閱讀心得#20…

      2024-10-25

      閱讀筆記

      [閱讀心得#19…

      2024-08-16

      閱讀筆記

      [閱讀心得#18…

      2024-05-10

      閱讀筆記

      [閱讀心得#17…

      2022-01-22