本人小白 對能看懂論文的人很羨慕 想花時間提升下自己 ,最近在看FM因子分解機的時候 發現網上很多博客講的都不清晰 就去看論文 然後發現各種符號表示還有公式 看不明白是什麼意思,請問遇到自己不熟悉的數學符號公式,有沒有什麼工具可以幫助理解,還是只能從頭學,程度到了自然就看懂了?

https://www.csie.ntu.edu.tw/~b97053/paper/Factorization%20Machines%20with%20libFM.pdf

(主要是希望找到面對這樣問題的切實的解決方法 不在於解決這一個問題 可能舉得例子不恰當 不用太糾結 另外回答中有的小夥伴說的很好 一般論文中都會有解釋 我第一次閱讀paper 粗心了 抱歉 )


如果不是專門研究演算法的非計算機專業的學生,我的建議是對於機器學習,更多的是從宏觀上了解該某個機器學習方法的作用是什麼?輸入是什麼?輸出是什麼?可調節的超參數是什麼?各個超參數的含義是什麼?對於具體的數學公式其實不必做過多的糾結,更多的是理解數學公式背後的物理含義和數學意義。

下面針對每一個問題舉個例子哈。

(1)比如某個機器學習方法的作用是什麼?其實無外乎兩大類:監督學習和非監督學習,監督學習又分為分類和回歸,非監督學習又分為聚類、降維。因此,對於某個特定的機器學習方法,只要分清它是分類還是回歸,抑或是聚類還是降維就可以運用演算法了。比如常見的分類演算法包括Logistic Regression,Decision tree等,回歸演算法包括神經網路、線性回歸等,聚類包括K-means和DBSCAN,降維主要是PCA。了解各個演算法的分類後,就能知道各個演算法的作用是什麼,具有相同作用的演算法在一定程度上是可以互相替代的,只不過針對不同的數據集特徵,可能某一演算法會表現出更好的學習效果。

(2)輸入輸出是什麼?對於所有演算法,輸入都是數據集的特徵,不同的在於演算法的輸出和訓練樣本。對於分類演算法,輸出是樣本所在的類別;對於回歸演算法,輸出是一個連續空間上的任意實數;因為分類和回歸演算法都是監督學習範疇,所以訓練樣本是包含標籤的,也就是訓練樣本是包含輸出值的。對於聚類演算法,輸出同樣是樣本的類別,不過和分類演算法不一樣的地方在於,聚類是無監督學習,因此它的訓練樣本是不包含輸出值的。對於降維演算法,輸出是降維後的樣本特徵,同樣它的訓練樣本也是不包含輸出值的。

(3)可調節的超參數是什麼?超參數的含義是什麼?這個也是不同機器學習演算法的核心所在,比如k-means演算法中可調節的超參數包括聚類中心的數目、樣本點間距的度量方法等,其中聚類中心的數目規定了將樣本自動劃分為幾類,顯然聚類中心數越多,樣本會被分的越精細,但會丟失對樣本共性特徵的挖掘;若聚類中心數很少,樣本被分的越粗,不能體現出各聚類結果間的差異性,因此需要對聚類中心的數目進行試錯或通過特定方法進行確定。樣本點間距的度量方法包括幾何度量、絕對值度量等,它定義了樣本間差異性的度量規則,不同的度量規則可能導致不同的聚類結果。

了解了上述基本概念後,實際上就可以利用Python中提供的sklearn庫做自己的機器學習演算法啦~sklearn庫對目前絕大部分機器學習演算法做了封裝,使用起來特別簡單,只要給定輸入輸出,指定超參數,系統就能自己進行模型參數的學習和訓練~而常見論文中的公式,大部分都是抄的,並不是真的寫了那麼複雜的代碼,實際上代碼都是用的第三方庫。

當然上面的回答針對的是非計算機專業的學生,如果是專門研究機器學習演算法的,需要提出新演算法的,就另當別論了,那就真的需要讀懂數學公式還要自己寫代碼啦~


我的下面這個回答里給出了推薦的機器學習的網站,在看視頻的時候,只需要從宏觀上對相關的理論進行把握,理解理論的intuition,至於具體的實現可以完全交給sklearn庫以及類似tensorflow的神經網路庫,裡面還給出了推薦配套閱讀的書籍以及相關資料的免費下載地址,希望對大家有所幫助哈~

有哪些可以自學機器學習、深度學習、人工智慧的網站??

www.zhihu.com圖標

不需要什麼鬼工具,沒有什麼公式會是「完全看不懂的」,我的經驗是看不懂只有這麼幾點原因,先對個對號

數學符號有沒接觸過的

這個要麼不會碰到,要麼一碰到就完全無解,但能用在機器學習論文中的數學符號大多都有成熟的數學體系,或者純粹就是表示方便而已。這個只要翻一些基礎的資料就好了,其中機器學習領域這部分多數來自泛函分析或近世代數。

變數符號沒懂

先排除作者各種slightly abuse的情況,絕大多數期刊會議的論文能發出來給你看到的基本每條公式上下文都會有where X is XXXX這種很完備的解釋,先把每個變數都弄明白是啥含義在哪個空間意義是啥,公式里哪怕有一個變數不知道都要翻整篇文章找到他的定義。如果作者沒有明確表達自己給出的符號是啥意思,請直接刪掉這篇民科論文。

絕大多數人看不懂公式不是因為真的專業知識不夠,而是一眼看到一大條嚇人的公式就條件反射的噁心。上面兩條基本就能搞定六七成問題,但如果想「看懂」一條公式,這還不太夠。

基礎不紮實

萬惡之源好吧……下至高數線代概率論,上至泛函測度概率圖模型,哪看不懂就回溯。但更多的情況是一篇論文前面有好多好多奠基的貢獻,這篇論文才在這些基礎上蹦出來的,這不屬於專業知識不足而是文章基礎知識不完善的問題,說白了就閱讀技巧。如果你無法從一篇文章中立刻找到從最簡單的模型到這篇論文是怎麼演化的,就先把這篇放一放,詳細看看related work,把前人提出的東西都扒出來擼一遍,通常這麼做完你會發現這篇文章如此複雜的公式,先是從很基礎的東西,經很多篇論文迭代優化以後形成的,這篇文章只不過是多次迭代中你看到的最後一次,而他的intuition就在introduction里說明了。

不知道怎麼構造的

當你想知道一條公式為什麼這麼構造而去討論的時候,是不是經常都會聽到不少人(不乏老師教授等)很不在乎地對你說「這就是構造!巧妙的構造!你還問他怎麼來的當然是構造出來的!」放你羅圈屁哦。沒有哪條公式是瞎構造的,這個確實很玄學,但全靠個人慢慢積累,最關鍵的是各種運算元都有哪些性質和不足你都要十分清楚,這篇文章想解決什麼問題也要摸清楚。比方說幾個向量結合成一個向量你要怎麼構造,mean sum max min concat效果怎麼樣為什麼會這樣這樣有什麼問題,變換以後再這一溜效果怎麼樣為什麼會這樣這樣有什麼問題,這個變換怎麼構造效果怎麼樣為什麼會這樣這樣有什麼問題,常帶著這個疑問看論文時間長了以後,你自然可以批判地看待新提出的公式了。

廢話已完,直接拿題主這個為例(戰術後仰)

算了,為個鬼栗(╯‵□′)╯︵┻━┻

這提問問題沒頭沒尾的給神仙也不知道這篇論文里這些符號都代表什麼變數……


曾經作為新手的我一開始是死於notation,就是根本看不懂那些數學符號是什麼意思,一個公式那麼多符號連在一起直接傻眼。各種上下標,羅馬符號...一開始是很難入手的。

一些推導比較多的像是做網路的做通訊的文章一般會在appendix附上一個notation list,讓你知道這些數學符號代表什麼。

當你逐個弄清楚這些數學符號是什麼意思後,其實也還是看不懂,因為他最終呈現出來的是一個等式,這時候就開始進入到原理的部分了。

更像是有兩座大山,第一座就是弄清每個數學符號,每個變數代表什麼。第二座山就是這一堆東西寫作等式後背後的邏輯。

認識演算法的邏輯其實需要有一個大致的對演算法的概念,這個概念指的是一種感性的認識。例如說到反向傳播的時候,腦海中會有神經元之間連線權重的調整,通過求偏導數實現。調整權重就是一個大概的認識,而求偏導數就是一個相對具體的認知。

有了這些概念再看回公式,理解起來就會容易得多,才不會總是覺得公式總是無中生有不知所以的感覺。

說實話個人覺得沒什麼捷徑可以走,真的一個領域的數學看多了習慣了之後就慢慢變得輕鬆了。機器學習的一些演算法原理還是需要從一個感性的認識過程到一個相對具體的數學過程。


一個解決本質的方法就是去學一些數學系的基礎課,建議以下路徑:

  1. 數學分析 高等代數
  2. 概率論 矩陣論
  3. 凸優化 統計學習

好好學完上述課程,市面上任選一本常見課本就行,天賦高者一兩年可成。


遇到跟你一樣的問題……現在做數據產品,要去深挖很多數據分析和演算法模型深層次的邏輯,所以也會不時看一些帶有大段公式的論文。當然,你要做演算法的話,要求肯定比我高多了,所以我只提供我能看懂一點的辦法,看看是不是對你有用。

首先,數學公式是語言,就像我們說的漢語一樣。但是問題在於,符號不認識,這就像我們做英語閱讀理解題時遇到了不認識的單詞一樣。

那麼遇到這種情況,除了抄同桌的答案總還是有點別的辦法的對吧?比如看看這個單詞的前綴、後綴,或者直接跳過這一句讀下去看看,再或者通過整段的感情色彩至少猜一猜這個詞是正面的還是負面的。而且如果你有出國旅遊的經歷,那麼在國外,即使完全不說一個單詞,靠肢體動作和表情同樣能溝通簡單的信息,是不是很神奇?

這裡邊的精髓就在於,不僅內容會傳達信息,形式同樣會傳達信息(此處省略1K字的「形式與內容」的探討)。其實公式的每個符號就是內容,而整個公式的結構就是形式

所以,這裡的思路是從整體著眼。有時候面對一個特別龐大的公式,直接去關注每個符號實在難以瞻前顧後,看了一個忘了另一個。那麼我們不如換個思路:如果從整體到部分 來看呢?

有的公式本質就是個等式,而你框的那個本質要表達的就是隨機變數服從分布。那麼分布這個東西怎麼表示?不就那兩個參數嘛。然後再關注變數和兩個參數分別是怎麼計算的,考慮了什麼因素,為什麼給搞成了如此「非人類」的狀態。

而且你要做演算法,肯定還會遇到一些別的「怪物」公式,但其實本質就是個條件概率表達式,或者是用描述法表示的集合,或者就是個長相「醜陋」的目標函數而已。他們的本質並不複雜,只是此時此地必須長成這個樣子。

這個思路是不是能讓你更有信心面對複雜公式了呢?

所以,有些公式看上去很複雜,但是有許多「虛張聲勢」的成分。也不能怪人家,用很多符號和結構,為的是表達嚴謹(也可能有炫技的成分吧哈哈哈)。撥開這些表象,你可以從更本質的角度來理解公式的真正含義,而且公式的好處在於,有的沒的都寫在明面上了,不用像閱讀理解一樣猜來猜去。

最開始的幾個複雜公式可能確實怎麼也看不懂,需要別人幫忙才行。但是隨著接觸的複雜公式多了,慢慢建立這種「抓大放小」的思維模式,以後就能越來越快了。

而且你現在就可以試試,那些你已經啃過的公式,能不能用「人話」簡單地說出整個公式想表達的意思是什麼?然後再一一拆解公式的每一部分體現了怎樣的設計和思考。

這樣練一練,將來遇到類似「結構」的公式,你一眼就能直接從整體結構推斷出公式想表達的大致意思,之後再去關注每個細節的符號就好了。


同感.

沒找到什麼好工具.特殊符號也不好百度.好在主要都是希臘字母,可記錄一份希臘字母表,然後用發音去百度.

其他的,就是找相關的數學書,速度一下,至少了解一下相關背景,解決了什麼問題,並對特殊字元有個印象.


數學公式都是在講一個故事 好好想想這個故事是什麼 想明白了自然就明白符號的意義


思考一下看懂的人為什麼能看懂?

你目前已經能懂的那些概念是怎麼在你的記憶中組織和存儲的?

然後按照你自己得思維習慣,快速補全對那些不懂得概念的因果邏輯。

記憶和理解是需要組織和形象化的,也就是跟自己熟悉的概念進行類比推理。

你看別人的經驗,要學的是別人類比推理的思維邏輯,然後演化一個適合你自己思維習慣的邏輯。

舉再多別人的例子不如思考一下自己,看過很多別人的方法並不能改變你,只有落實到自己的思維習慣上,邁出改變自己的第一步才是硬道理。

思路總結:

  1. 了解自己的思維習慣
  2. 對不熟悉的概念進行類比推理
  3. 將知識在記憶中組塊化(梳理知識)


如果你不是要從事相關研究,我建議最快的方式是看代碼,有很多東西形式上看起來很複雜,但是寫到代碼上是另一回事。

最無腦的就是,看公式相應的代碼時,還跑一下,結果,形態吻合,就差不多對了。

不過,一些基本的符號和表示還是要記憶或記錄一下的。


一般文章對參數都有說明,如果公式不是能很好理解,先看看作者上下文有沒有解釋,如果沒有,那基本就是哪裡不會回溯哪裡的知識了,一般都是基礎知識不牢固,或者以前學的東西又還回去了,我就是經常有這種感覺,哎學渣的原罪,菜


推薦閱讀:
相关文章