<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 15 -- Matrix Factorization 上節課我們主要介紹了Radial Basis Function Network。它的原理就是基于距離相似性(distance-based similarities)的線性組合(linear aggregation)。我們使用k-Means clustering算法找出具有代表性的k個中心點,然后再計算與這些中心點的distance similarity,最后應用到RBF Network中去。 ### **LinearNetwork Hypothesis** 回顧一下,我們在機器學習基石課程的第一節課就提到過,機器學習的目的就是讓機器從數據data中學習到某種能力skill。我們之前舉過一個典型的推薦系統的例子。就是說,假如我們手上有許多不同用戶對不同電影的排名rank,通過機器學習,訓練一個模型,能夠對用戶沒有看過的某部電影進行排名預測。 ![這里寫圖片描述](https://img.kancloud.cn/d5/79/d5799c3b2e6a03e2d61ae03ec20e8e2a_581x127.jpg) 一個典型的電影推薦系統的例子是2006年Netflix舉辦的一次比賽。數據包含了480189個用戶和17770部電影,總共1億多個排名信息。該推薦系統模型中,我們用![](https://img.kancloud.cn/63/df/63dfbab3c59712ed7a0700431a1a0c36_67x18.jpg)表示第n個用戶,這是一個抽象的特征,常常使用數字編號來代替具體哪個用戶。輸出方面,我們使用![](https://img.kancloud.cn/01/96/01966d28e5f970d700eb58c6e7078696_73x12.jpg)表示第n個用戶對第m部電影的排名數值。 ![這里寫圖片描述](https://img.kancloud.cn/4a/cc/4acc2ade0847265668b07d50484a5ac7_580x182.jpg) 下面我們來進一步看看這些抽象的特征,![](https://img.kancloud.cn/63/df/63dfbab3c59712ed7a0700431a1a0c36_67x18.jpg)是用戶的ID,通常用數字表示。例如1126,5566,6211等。這些編號并沒有數值大小上的意義,只是一種ID標識而已。這類特征被稱為類別特征(categorical features)。常見的categorical features包括:IDs,blood type,programming languages等等。而許多機器學習模型中使用的大部分都是數值特征(numerical features)。例如linear models,NNet模型等。但決策樹(decision tree)是個例外,它可以使用categorical features。所以說,如果要建立一個類似推薦系統的機器學習模型,就要把用戶ID這種categorical features轉換為numerical features。這種特征轉換其實就是訓練模型之前一個編碼(encoding)的過程。 ![這里寫圖片描述](https://img.kancloud.cn/05/a1/05a1a0f5e86694ec3d650b83445fa565_580x217.jpg) 一種最簡單的encoding方式就是binary vector encoding。也就是說,如果輸入樣本有N個,就構造一個維度為N的向量。第n個樣本對應向量上第n個元素為1,其它元素都是0。下圖就是一個binary vector encoding的例子。 ![這里寫圖片描述](https://img.kancloud.cn/a9/9d/a99d35d4162575cc0118de0c0808672c_390x92.jpg) 經過encoding之后,輸入![](https://img.kancloud.cn/1d/eb/1debcab2fe3793b26ea9e43c365edf29_18x11.jpg)是N維的binary vector,表示第n個用戶。輸出![](https://img.kancloud.cn/23/f1/23f1fdeb27de71b5e6113986f1b2bfa6_17x12.jpg)是M維的向量,表示該用戶對M部電影的排名數值大小。注意,用戶不一定對所有M部電影都作過評價,未評價的恰恰是我們要預測的(下圖中問號?表示未評價的電影)。 ![這里寫圖片描述](https://img.kancloud.cn/ae/33/ae33332c3b268013bfa331b643160599_580x164.jpg) 總共有N個用戶,M部電影。對于這樣的數據,我們需要掌握每個用戶對不同電影的喜愛程度及排名。這其實就是一個特征提取(feature extraction)的過程,提取出每個用戶喜愛的電影風格及每部電影屬于哪種風格,從而建立這樣的推薦系統模型。可供選擇使用的方法和模型很多,這里,我們使用的是NNet模型。NNet模型中的網絡結構是![](https://img.kancloud.cn/52/8c/528c671e969c73fc8bdc65cd6557b6cc_89x17.jpg)型,其中N是輸入層樣本個數,![](https://img.kancloud.cn/0f/87/0f8783f57969e021137bc68a0300d5c7_11x17.jpg)是隱藏層神經元個數,M是輸出層電影個數。該NNet為了簡化計算,忽略了常數項。當然可以選擇加上常數項,得到較復雜一些的模型。順便提一下,這個結構跟我們之前介紹的autoencoder非常類似,都是只有一個隱藏層。 ![這里寫圖片描述](https://img.kancloud.cn/72/22/722276bffce73be8ab47a66701d4bed3_580x167.jpg) 說到這里,有一個問題,就是上圖NNet中隱藏層的tanh函數是否一定需要呢?答案是不需要。因為輸入向量x是經過encoding得到的,其中大部分元素為0,只有一個元素為1。那么,只有一個元素![](https://img.kancloud.cn/1d/eb/1debcab2fe3793b26ea9e43c365edf29_18x11.jpg)與相應權重的乘積進入到隱藏層。由于![](https://img.kancloud.cn/c9/a6/c9a6d2c8ca779587ff6c84f5360af395_51x15.jpg),則相當于只有一個權重值進入到tanh函數進行運算。從效果上來說,tanh(x)與x是無差別的,只是單純經過一個函數的計算,并不影響最終的結果,修改權重值即可得到同樣的效果。因此,我們把隱藏層的tanh函數替換成一個線性函數y=x,得到下圖所示的結構。 ![這里寫圖片描述](https://img.kancloud.cn/ca/31/ca3138df667147836e1aa4109cbce66c_581x190.jpg) 由于中間隱藏層的轉換函數是線性的,我們把這種結構稱為Linear Network(與linear autoencoder比較相似)。看一下上圖這個網絡結構,輸入層到隱藏層的權重![](https://img.kancloud.cn/7d/08/7d081ee05b8c3c519c50054dd77a4299_35x25.jpg)維度是Nx![](https://img.kancloud.cn/0f/87/0f8783f57969e021137bc68a0300d5c7_11x17.jpg),用向量![](https://img.kancloud.cn/c9/79/c979394d7e367a97e365faa1e4f7e519_25x16.jpg)表示。隱藏層到輸出層的權重![](https://img.kancloud.cn/6f/de/6fde8110f9a8b379ccd12d3a59be14ae_35x25.jpg)維度是![](https://img.kancloud.cn/0f/87/0f8783f57969e021137bc68a0300d5c7_11x17.jpg)xM,用矩陣W表示。把權重由矩陣表示之后,Linear Network的hypothesis 可表示為: ![](https://img.kancloud.cn/83/e7/83e74060389f488f3ec797ec3c89bfa5_111x20.jpg) 如果是單個用戶![](https://img.kancloud.cn/1d/eb/1debcab2fe3793b26ea9e43c365edf29_18x11.jpg),由于X向量中只有元素![](https://img.kancloud.cn/1d/eb/1debcab2fe3793b26ea9e43c365edf29_18x11.jpg)為1,其它均為0,則對應矩陣V只有第n列向量是有效的,其輸出hypothesis為: ![](https://img.kancloud.cn/c5/26/c526a824de8a6dddc446dbdd13745fa6_113x20.jpg) ![這里寫圖片描述](https://img.kancloud.cn/67/b9/67b9fad05a9bf39198eed100dffb4efc_580x103.jpg) ### **Basic Matrix Factorization** 剛剛我們已經介紹了linear network的模型和hypothesis。其中Vx可以看作是對用戶x的一種特征轉換![](https://img.kancloud.cn/14/10/141069974357dc052c30231e17897586_36x18.jpg)。對于單部電影,其預測的排名可表示為: ![](https://img.kancloud.cn/0b/03/0b0319a865f1a0f41c947671bd048311_131x21.jpg) ![這里寫圖片描述](https://img.kancloud.cn/ec/c8/ecc82c34015cd0472e7e697016a266bb_581x136.jpg) 推導完linear network模型之后,對于每組樣本數據(即第n個用戶第m部電影),我們希望預測的排名![](https://img.kancloud.cn/2f/3d/2f3dcc2ccd4adfb48cca373c8b20e5aa_42x21.jpg)與實際樣本排名![](https://img.kancloud.cn/23/f1/23f1fdeb27de71b5e6113986f1b2bfa6_17x12.jpg)盡可能接近。所有樣本綜合起來,我們使用squared error measure的方式來定義![](https://img.kancloud.cn/1a/7b/1a7b854be0e1a2c00757595948b96a68_25x15.jpg),![](https://img.kancloud.cn/1a/7b/1a7b854be0e1a2c00757595948b96a68_25x15.jpg)的表達式如下所示: ![這里寫圖片描述](https://img.kancloud.cn/1c/d8/1cd8af81e93c382563204bfb99cf5ac2_580x151.jpg) 上式中,灰色的部分是常數,并不影響最小化求解,所以可以忽略。接下來,我們就要求出![](https://img.kancloud.cn/1a/7b/1a7b854be0e1a2c00757595948b96a68_25x15.jpg)最小化時對應的V和W解。 我們的目標是讓真實排名與預測排名盡可能一致,即![](https://img.kancloud.cn/e9/59/e959919ad04471d72b3d120008bd23a7_163x21.jpg)。把這種近似關系寫成矩陣的形式:![](https://img.kancloud.cn/99/83/9983338609d385202f3a58815c4dc738_82x16.jpg)。矩陣R表示所有不同用戶不同電影的排名情況,維度是NxM。這種用矩陣的方式進行處理的方法叫做Matrix Factorization。 ![這里寫圖片描述](https://img.kancloud.cn/84/1c/841cd3e30579a9e24c1f682571394e06_580x136.jpg) 上面的表格說明了我們希望將實際排名情況R分解成兩個矩陣(V和W)的乘積形式。V的維度是![](https://img.kancloud.cn/0f/87/0f8783f57969e021137bc68a0300d5c7_11x17.jpg)xN的,N是用戶個數,![](https://img.kancloud.cn/0f/87/0f8783f57969e021137bc68a0300d5c7_11x17.jpg)可以是影片類型,例如(喜劇片,愛情片,懸疑片,動作片,…)。根據用戶喜歡的類型不同,賦予不同的權重。W的維度是![](https://img.kancloud.cn/0f/87/0f8783f57969e021137bc68a0300d5c7_11x17.jpg)xM,M是電影數目,![](https://img.kancloud.cn/0f/87/0f8783f57969e021137bc68a0300d5c7_11x17.jpg)同樣是影片類型,該部電影屬于哪一類型就在那個類型上占比較大的權重。當然,![](https://img.kancloud.cn/0f/87/0f8783f57969e021137bc68a0300d5c7_11x17.jpg)維特征不一定就是影片類型,還可以是其它特征,例如明顯陣容、年代等等。 ![這里寫圖片描述](https://img.kancloud.cn/cf/ed/cfedd9a6942c33103e53d971fa199418_590x238.jpg) 那么,Matrix Factorization的目標就是最小化![](https://img.kancloud.cn/1a/7b/1a7b854be0e1a2c00757595948b96a68_25x15.jpg)函數。![](https://img.kancloud.cn/1a/7b/1a7b854be0e1a2c00757595948b96a68_25x15.jpg)表達式如下所示: ![這里寫圖片描述](https://img.kancloud.cn/b1/b3/b1b355c07a3b85ccdcf7ebcf9a954c5d_580x139.jpg) ![](https://img.kancloud.cn/1a/7b/1a7b854be0e1a2c00757595948b96a68_25x15.jpg)中包含了兩組待優化的參數,分別是![](https://img.kancloud.cn/dc/f3/dcf3fc63de3965b8538f8346a365df96_17x11.jpg)和![](https://img.kancloud.cn/18/c7/18c7cc5d9ffae47d41bca7d224e2234f_25x11.jpg)。我們可以借鑒上節課中k-Means的做法,將其中第一個參數固定,優化第二個參數,然后再固定第二個參數,優化第一個參數,一步一步進行優化。 當![](https://img.kancloud.cn/dc/f3/dcf3fc63de3965b8538f8346a365df96_17x11.jpg)固定的時候,只需要對每部電影做linear regression即可,優化得到每部電影的![](https://img.kancloud.cn/0f/87/0f8783f57969e021137bc68a0300d5c7_11x17.jpg)維特征值![](https://img.kancloud.cn/18/c7/18c7cc5d9ffae47d41bca7d224e2234f_25x11.jpg)。 當![](https://img.kancloud.cn/18/c7/18c7cc5d9ffae47d41bca7d224e2234f_25x11.jpg)固定的時候,因為V和W結構上是對稱的,同樣只需要對每個用戶做linear regression即可,優化得到每個用戶對![](https://img.kancloud.cn/0f/87/0f8783f57969e021137bc68a0300d5c7_11x17.jpg)維電影特征的喜愛程度![](https://img.kancloud.cn/dc/f3/dcf3fc63de3965b8538f8346a365df96_17x11.jpg)。 ![這里寫圖片描述](https://img.kancloud.cn/29/38/293891a0027c47fd6317233755c89f7f_580x177.jpg) 這種算法叫做alternating least squares algorithm。它的處理思想與k-Means算法相同,其算法流程圖如下所示: ![這里寫圖片描述](https://img.kancloud.cn/0b/f6/0bf68a23695e70507b8fdd79b5fc2745_580x195.jpg) alternating least squares algorithm有兩點需要注意。第一是initialize問題,通常會隨機選取![](https://img.kancloud.cn/dc/f3/dcf3fc63de3965b8538f8346a365df96_17x11.jpg)和![](https://img.kancloud.cn/18/c7/18c7cc5d9ffae47d41bca7d224e2234f_25x11.jpg)。第二是converge問題,由于每次迭代更新都能減小![](https://img.kancloud.cn/1a/7b/1a7b854be0e1a2c00757595948b96a68_25x15.jpg),![](https://img.kancloud.cn/1a/7b/1a7b854be0e1a2c00757595948b96a68_25x15.jpg)會趨向于0,則保證了算法的收斂性。 ![這里寫圖片描述](https://img.kancloud.cn/6e/fd/6efd3eb226a1ffe716ffe880f35faed6_580x83.jpg) 在上面的分析中,我們提過Matrix Factorization與Linear Autoencoder的相似性,下圖列出了二者之間的比較。 ![這里寫圖片描述](https://img.kancloud.cn/7f/20/7f203f091c4cedab587e88013a9b7154_585x261.jpg) Matrix Factorization與Linear Autoencoder有很強的相似性,都可以從原始資料匯總提取有用的特征。其實,linear autoencoder可以看成是matrix factorization的一種特殊形式。 ### **Stochastic Gradient Descent** 我們剛剛介紹了alternating least squares algorithm來解決Matrix Factorization的問題。這部分我們將討論使用Stochastic Gradient Descent方法來進行求解。之前的alternating least squares algorithm中,我們考慮了所有用戶、所有電影。現在使用SGD,隨機選取一筆資料,然后只在與這筆資料有關的error function上使用梯度下降算法。使用SGD的好處是每次迭代只要處理一筆資料,效率很高;而且程序簡單,容易實現;最后,很容易擴展到其它的error function來實現。 ![這里寫圖片描述](https://img.kancloud.cn/ca/e3/cae36485eb2b4c0cdb48eb0d5a3157d9_580x254.jpg) 對于每筆資料,它的error function可表示為: ![這里寫圖片描述](https://img.kancloud.cn/87/fe/87feb667cd8f74c159d82fa72a535dc8_579x50.jpg) 上式中的err是squared error function,僅與第n個用戶![](https://img.kancloud.cn/dc/f3/dcf3fc63de3965b8538f8346a365df96_17x11.jpg),第m部電影![](https://img.kancloud.cn/18/c7/18c7cc5d9ffae47d41bca7d224e2234f_25x11.jpg)有關。其對![](https://img.kancloud.cn/dc/f3/dcf3fc63de3965b8538f8346a365df96_17x11.jpg)和![](https://img.kancloud.cn/18/c7/18c7cc5d9ffae47d41bca7d224e2234f_25x11.jpg)的偏微分結果為: ![](https://img.kancloud.cn/3b/97/3b9762a3a0f6217e3fafdfac76d74c16_212x21.jpg) ![](https://img.kancloud.cn/2e/c8/2ec8b9e4fc3b4069f286d343a1f09da6_211x21.jpg) ![這里寫圖片描述](https://img.kancloud.cn/2e/05/2e053efc3a1fbad3ede7f0ae61da7c4d_582x167.jpg) 很明顯,![](https://img.kancloud.cn/95/62/956261b578cf63688a47fb8c2d05d551_32x16.jpg)和![](https://img.kancloud.cn/d3/bb/d3bb6a313c10ef8c5eb93cfc3a873d4c_40x16.jpg)都由兩項乘積構成。(忽略常數因子2)。第一項都是![](https://img.kancloud.cn/d4/51/d4519dacfc0d7e61ebb6250329173bfa_93x21.jpg),即余數residual。我們在之前介紹的GBDT算法中也介紹過余數這個概念。![](https://img.kancloud.cn/95/62/956261b578cf63688a47fb8c2d05d551_32x16.jpg)的第二項是![](https://img.kancloud.cn/18/c7/18c7cc5d9ffae47d41bca7d224e2234f_25x11.jpg),而![](https://img.kancloud.cn/d3/bb/d3bb6a313c10ef8c5eb93cfc3a873d4c_40x16.jpg)的第二項是![](https://img.kancloud.cn/dc/f3/dcf3fc63de3965b8538f8346a365df96_17x11.jpg)。二者在結構上是對稱的。 計算完任意一個樣本點的SGD后,就可以構建Matrix Factorization的算法流程。SGD for Matrix Factorization的算法流程如下所示: ![這里寫圖片描述](https://img.kancloud.cn/7e/27/7e27b164c41ed662f53a17b9cd79051f_580x270.jpg) 在實際應用中,由于SGD算法簡單高效,Matrix Factorization大多采用這種算法。 介紹完SGD for Matrix Factorization之后,我們來看一個實際的應用例子。問題大致是這樣的:根據現在有的樣本資料,預測未來的趨勢和結果。顯然,這是一個與時間先后有關的預測模型。比如說一個用戶三年前喜歡的電影可能現在就不喜歡了。所以在使用SGD選取樣本點的時候有一個技巧,就是最后T次迭代,盡量選擇時間上靠后的樣本放入到SGD算法中。這樣最后的模型受這些時間上靠后的樣本點影響比較大,也相對來說比較準確,對未來的預測會比較準。 ![這里寫圖片描述](https://img.kancloud.cn/99/09/99093ed236fabd9ab5ba65e7c9a3e458_580x260.jpg) 所以,在實際應用中,我們除了使用常規的機器學習算法外,還需要根據樣本數據和問題的實際情況來修改我們的算法,讓模型更加切合實際,更加準確。我們要學會靈活運用各種機器學習算法,而不能只是照搬。 ### **Summary of Extraction Models** 從第12節課開始到現在,我們總共用了四節課的時間來介紹Extraction Models。雖然我們沒有給出Extraction Models明確的定義,但是它主要的功能就是特征提取和特征轉換,將原始數據更好地用隱藏層的一些節點表征出來,最后使用線性模型將所有節點aggregation。這種方法使我們能夠更清晰地抓住數據的本質,從而建立最佳的機器學習模型。 下圖所示的就是我們介紹過的所有Extraction Models,除了這四節課講的內容之外,還包括之前介紹的Adaptive/Gradient Boosting模型。因為之前筆記中都詳細介紹過,這里就不再一一總結了。 ![這里寫圖片描述](https://img.kancloud.cn/1e/ea/1eeaf8a8fc0e3e949c898a575997963d_584x279.jpg) 除了各種Extraction Models之外,我們這四節課還介紹了不同的Extraction Techniques。下圖所示的是對應于不同的Extraction Models的Extraction Techniques。 ![這里寫圖片描述](https://img.kancloud.cn/b1/38/b13818dad5c0bde470eea457833ef5ed_584x278.jpg) 最后,總結一下這些Extraction Models有什么樣的優點和缺點。從優點上來說: * **easy:機器自己完成特征提取,減少人類工作量** * **powerful:能夠處理非常復雜的問題和特征提取** 另一方面,從缺點上來說: * **hard:通常遇到non-convex的優化問題,求解較困難,容易得到局部最優解而非全局最優解** * **overfitting:模型復雜,容易造成過擬合,需要進行正則化處理** 所以說,Extraction Models是一個非常強大的機器學習工具,但是使用的時候也要小心處理各種可能存在的問題。 ![這里寫圖片描述](https://img.kancloud.cn/59/f0/59f01226b17eecea5f0cec3fde8ca0a6_585x310.jpg) ### **總結** 本節課主要介紹了Matrix Factorization。從電影推薦系統模型出發,首先,我們介紹了Linear Network。它從用戶ID編碼后的向量中提取出有用的特征,這是典型的feature extraction。然后,我們介紹了基本的Matrix Factorization算法,即alternating least squares,不斷地在用戶和電影之間交互地做linear regression進行優化。為了簡化計算,提高運算速度,也可以使用SGD來實現。事實證明,SGD更加高效和簡單。同時,我們可以根據具體的問題和需求,對固有算法進行一些簡單的調整,來獲得更好的效果。最后,我們對已經介紹的所有Extraction Models做個簡單的總結。Extraction Models在實際應用中是個非常強大的工具,但是也要避免出現過擬合等問題。 **_注明:_** 文章中所有的圖片均來自臺灣大學林軒田《機器學習技法》課程
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看