試試用人話說機器學習(一)

2021-07-11 23:14:20 字數 2492 閱讀 6341

很多年沒寫技術部落格了,本來也不想寫的,特別是機器學習這麼聽起來很高深的問題,再者因為確實會涉及很多專業的數學知識,我怕自己不一定能夠解釋清楚,因為我發現我之前學的其實都是算術,算不上數學!!數學老師看到這估計會罰站我幾個世紀。但是呢,怕後面又忘記了,而且有規劃要寫寫就只能試試了。

首先呢,我大概列舉一下會用到的數學工具,如資料歸一化、hausdorff距離、pca主成元素分析、隨機梯度下降等,我看了下貌似大多數機器學習框架、演算法也都這些套路。具體的工具我會有一些說明,但不是很專業,還是希望能用人話說明白的盡量不搬公式。

第乙個例子呢,是乙個人臉型別分類的例子,乙個很簡單的例子,大家都知道人的臉型有圓形、橢圓(鵝蛋)、倒三角形、方型(國字臉)這些,當然還有正三角這樣***的臉型的就不說了。我們這裡討論的前提是已經經過人臉識別,有了人臉五官的特徵的資料點集合和輪廓的資料點集合,如下圖:

我想到這樣的實驗因為有天在電梯裡有兩個女孩在爭論自己臉型的問題,我當時就想如果有個系統能根據他們**自動進行臉型判斷那我就可以安靜的座電梯了。

首先呢,作為乙個寫了很多年**的程式設計師,想要實現這樣的系統,一開始肯定是信心滿滿的,畢竟這看起來就是個很簡單的問題,估計寫幾個判斷就可以搞定了,傳統的寫程式思路應該是這樣的:

1.首先我要為每種臉型尋找規則,就是尋找規律,比如下巴最下面的點和兩邊輪廓最外面點的夾角,通過夾角度數判斷是什麼臉型,如10度-20度為三角形;想到這裡我應該被自己的智慧型感動到了。

2.寫**,就寫四個判斷語句,so easy

3.測試,我找了幾個典型的三角,ok,完美判斷出來了

4.然後我把程式分享跟別人

然後悲催的故事就發生了,電梯裡一片吐槽聲,人家明明是漂亮的鵝蛋臉確定識別成了國字臉。作為乙個自尊心很強烈的程式設計師,我深感自責和(╯﹏╰),頓時覺得世界好不美好,還好我是個堅強的程式設計師,也喜歡挑戰,所以就下決心優化系統。

我認真仔細分析了之前的思路,發現用規則的辦法基本上不可能實現,因為人的臉型並非規則的東西,我們所謂的分類也沒明確的標準,所以規則也就不清楚,換句話說就是邏輯不明確。因此好像真的沒辦法了??後來經過查閱很多資料、這裡順便吐槽一下國內**,有些**不僅沒幫到人,還會誤導人,然後發現可以通過統計分析的方法處理這個問題,也就大家知道的數理統計這些。雖然很多科學家都是不相信概率論的,比如圖靈、愛因斯坦,但是目前也沒法否認它的神奇,如我們最愛用的求平均值、高斯分布等,有興趣大家可以自己了解。

按照這個思路我開始動手:

1.我收集了不同臉型的資料樣本,如各100份,這裡涉及到第乙個資料處理就是歸一化;為什麼要歸一化呢,因為你想啊,每個人拍照的姿勢、焦距、影象的大小都不一樣,而我們根據常識也可以判斷所有的計算都要在同樣的標準下進行才有效;因此呢有兩種解決辦法,要麼你就得讓別人按照你的要求拍照,要麼你自己處理,顯然後者更應該受到別人歡迎吧,畢竟誰也不喜歡規矩。因此歸一下就是把樣本資料進行處理,得到不受姿勢、焦距、影象影響的資料樣本,具體歸一下演算法如下,貼別人圖的,其實有很多種,有興趣自己去看:

2.處理新影象的歸類問題,我們已經有樣本了,來了一張新的影象改怎麼辦呢?按照正常思路我們就是想判斷這張新的影象和哪個型別的樣本比較接近了,當然新影象的資料也得歸一化,剛剛說「接近」,那數學上是怎麼定義接近呢?其實就是距離,雖然距離看起來很簡單,那可能是因為我們受笛卡爾空間影響太深了,導致一想到距離我們就想起

其實距離和空間有關,但是呢數學上有很多很多種不同的空間,我這裡用的就是hausdorff空間的huasdorrf距離,具體內容我就不展開了,因為我也沒有進行很深入研究,不敢瞎寫,有興趣的自己去了解了。大概演算法是新影象和每個型別樣本裡的每個樣本計算huasdorrf距離,然後取最大值,如三角形樣本裡,,樣本a的距離是0.2,其他樣本的距離都小於0.2,因此和三角形樣本的距離就是0.2;然後判斷和那個型別的距離最小就算是那個型別。如圓形的距離是0.8,三角形是0.2,橢圓是0.6,方形是0.5那就是三角形臉。距離公式如下:

得到的示意圖如下:

3.現在已經把模型寫好了,就可以測試了

整體來說,效果還可以,比如你年輕時候可能是三角形臉,但是後來發福就變成圓臉了,也是可以分類的,但是效果和樣本的數量和質量也有關係,具體就不細說了。當然最後說明下這明顯就是乙個簡單的應用為什麼非要說是和機器學習有關呢?其實我個人理解,這裡應用雖然簡單,但是這裡分類的概念對機器學習應該是很重要的,總結一下就是根據已有的樣本(機器學習裡叫知識庫),通過特定的模型(這裡就是我的歸一化和hausdorff距離),對新的輸入做出分類(就是得出臉型)。

本來還想寫乙個關於人臉變形的案例,裡面會涉及到機器學習常用的pca(主成元素分析)、梯度下降、矩陣特徵值特徵向量等,但是有點晚了,年紀大了要熬不住夜,就等下次再寫了;

用人話理解Kmeans聚類

不同類之間有無包含關係 硬聚類 每個物件只屬於乙個類 軟聚類 每個物件以概率屬於某個類。比如 樣本1 a 0.8,b 0.1,c 0.1 將特徵向量化,每個樣本表示為高維空間的乙個點 計算各個點之間的距離 距離與相似度成反比 歐氏距離 曼哈頓距離 余弦相似度 自底向上 凝聚層次聚類 自頂向下 層次聚...

用人話告訴你什麼是CDN

cdn的全稱是content delivery network,即內容分發網路。cdn是構建在現有網路基礎之上的智慧型虛擬網路,依靠部署在各地的邊緣伺服器,通過中心平台的負載均衡 內容分發 排程等功能模組,使使用者就近獲取所需內容,降低網路擁塞,提高使用者訪問響應速度和命中率。cdn的關鍵技術主要有...

晚甘園主人 話說岩茶和觀音

這可是晚甘園的園主的原創大作 話說岩茶和觀音。晚甘園主人乃資深 茶人 對各類茶品均有研究,其文章很有分量,極力推薦。話說岩茶和觀音 晚甘園 晚甘園主人,晚甘園的園主,資深 茶人 現居住在福建 岩茶和觀音,可以算是當前中國烏龍裡的兩大主流了。台茶應該說也不錯,稱得上烏龍新軍了。其製作技藝之精良,理論與...