6-机器学习启蒙- 深度学习: 图像搜索
6- 深度學(xué)習(xí): 圖像搜索
github: https://github.com/mtianyan/graphLabStartedML
深度學(xué)習(xí): 圖像搜索
基于圖片的相似度來選購商品
可視化商品推薦
我想買雙新鞋,但是。。。
mark符合我的風(fēng)格,我又感興趣的鞋子真不容易
文本搜素不能幫助我們
mark搜素時裝鞋,只能找到一雙我們覺得有意思的。而我想找的是真正有個性不同的鞋子
可我又不知道用什么關(guān)鍵字搜索,用圖像的特征找到相似的鞋子
神經(jīng)網(wǎng)絡(luò)
特征是機器學(xué)習(xí)的關(guān)鍵
在做機器學(xué)習(xí)時我們一般會有輸入值,比如情感分析中的評價語句
mark目標;重新檢視分類器,但是應(yīng)用更復(fù)雜的非線性特征
圖像分類
我們的目標是從一個圖像出發(fā)。
mark輸入圖像的像素,輸出預(yù)測的對象值。
分出狗狗的品種。
特征指的是我們的數(shù)據(jù)的表現(xiàn)形式,我們把他們當(dāng)做輸入送入分類器。
數(shù)據(jù)有很多種表現(xiàn)形式:
- 比如文字,就可以用詞袋模型和tf-idf的形式。
- 對于圖片也有很多其他的表現(xiàn)形式。
神經(jīng)網(wǎng)絡(luò): 學(xué)習(xí)"非常" 非線性的特征
線性分類器
線性分類器區(qū)分開正類和負類
mark分類器的圖表示: 用于定義神經(jīng)網(wǎng)絡(luò)
mark對于每一個特征變量我們都有一個與之對應(yīng)的特征節(jié)點,直到第d個特征變量。
對于我們要預(yù)測的輸出值y我們也有一個節(jié)點來對應(yīng)。
將特征節(jié)點與權(quán)重相乘然后累加得到分數(shù)。
分值大于零時我們輸入1,分值小于0時我們輸出0
小型線性分類器,小型神經(jīng)網(wǎng)絡(luò)或單層神經(jīng)網(wǎng)絡(luò)。
線性分類器可以表示什么?
mark mark邏輯的或運算可以用線性分類器來表示。
定義一個打分函數(shù),在后三行的情況下輸出正值,值大于0即可。
- 第一行時值小于0
權(quán)重為 -0.5 1 1 時滿足條件。
與運算,只有x1 和x2 都等于1的時候才能大于0
單層神經(jīng)網(wǎng)絡(luò)來表示邏輯與運算和或運算。
線性分類器不能表示什么?
mark在這個函數(shù)中沒有哪條線能將加號,減號分割開。
mark異或運算: 任何事情的反例
我們之前講過的線性特征就不夠用了,我們需要一些非線性的特征
解決XOR問題: 添加一層
markXOR結(jié)果為1的情況是x1為真,x2為假 或 x1為假,x2為真時
mark添加兩個單元。z1,z2
我們要做的是建立一個神經(jīng)網(wǎng)絡(luò):
- 不能直接輸入x1,x2預(yù)測y,但是它能預(yù)測中間值z1,z2
- 然后我們再通過中間值來預(yù)測y
與運算:
z1:節(jié)點1的權(quán)重-0.5, x1權(quán)重1,因為是not x2權(quán)重-1
z2: 節(jié)點1權(quán)重-0.5, x1權(quán)重-1,x2權(quán)重1
此時當(dāng)x1 x2全為真時: x1*1為1 x2*1為-1加起來為0,而我們需要的值是此時小于0.所以常數(shù)項-0.5
其他情況略。
神經(jīng)網(wǎng)絡(luò)
對數(shù)據(jù)進行多層次的變換。
有多層的線性和非線性變換
mark神經(jīng)網(wǎng)絡(luò)已經(jīng)被發(fā)明接近50年了
- 在90年代進入低谷
大約十年前,最近幾年有了大的復(fù)興
- 在一些典型問題的準確率大大提升
- 大量的數(shù)據(jù)集,(計算能力)gpu和新的建模學(xué)習(xí)算法使它如虎添翼
深度學(xué)習(xí)在計算機視覺中的應(yīng)用
圖像特征
特征 = 局部探測器
- 組合在一起構(gòu)成預(yù)測
- 現(xiàn)實中,特征都是很底層的
鼻子探測器,眼睛探測器,嘴巴探測器。
如果每個探測器都探測成功,就可以通過這個小型神經(jīng)網(wǎng)絡(luò)做出預(yù)測這是個人臉。
典型的局部探測器尋找圖像中的局部興趣點
圖像特征: 局部興趣點的組合
- 組合在一起構(gòu)成分類器
角落探測器
有很多手工構(gòu)造的特征被用于尋找興趣點
SIFT特征
mark典型圖像分類方法
mark根據(jù)sift特征被激活的地方構(gòu)成向量。這些特征在有些地方激活,有些地方不激活
這跟尋找一篇文章的單詞是類似的。
圖像特定的地方有沒有特定的角,然后就可以把這些信息輸入到分類器
線性識別分類器: 告訴我們是否是人臉
挑戰(zhàn)在于這些人工的特征很難設(shè)計
mark深度學(xué)習(xí): 自動學(xué)習(xí)特征
mark輸入到一個三層的神經(jīng)網(wǎng)絡(luò)
mark識別這些局部神經(jīng)探測器,每一層都會發(fā)現(xiàn)這些特征。在不同的層次探測不同的圖像性質(zhì)。
- 第一個探測器作用:
- 找到對角線的邊緣
- 中間是從另外一個方向抓取對角線邊緣
- 最后一個抓取過渡特征,從深色到綠色的變化
- 第二個探測器: 會把這些對角線邊緣綜合起來形成更復(fù)雜的探測器
發(fā)現(xiàn)彎彎曲曲的線,一些角
- 第三個探測器會更為復(fù)雜,識別出臉蛋
深度學(xué)習(xí)的性能
應(yīng)用深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的結(jié)果示例
- 德國交通信號識別問題
99.5%準確率(IDSIA團隊)
- 房屋門牌號識別(google 街景)
每個字符97.8%準確率
ImageNet2012競賽: 120萬張訓(xùn)練圖像,1000種類別
對于圖片進行分類,不是識別是不是一條狗,而是這個狗是啥品種的問題
marksuperVision團隊采用了深度神經(jīng)網(wǎng)絡(luò),大幅度超過對手
大大提高了大家對于深度學(xué)習(xí)網(wǎng)絡(luò)在計算機視覺領(lǐng)域應(yīng)用的興趣。
mark8層的神經(jīng)網(wǎng)絡(luò),有6000萬個參數(shù)
獲得這種驚人的結(jié)果需要:
計算機視覺中的深度學(xué)習(xí)
識別圖片中狗的品種
利用深度學(xué)習(xí)進行景物解析
mark每個像素進行分類,發(fā)現(xiàn)特定的區(qū)域。天空區(qū)域,草坪區(qū)域。
這類景物解析,也稱為場景理解。
神經(jīng)網(wǎng)絡(luò)對于這種需求非常有效
檢索相似圖像
mark我們輸入一張自己中意的鞋子的圖片,輸出風(fēng)格等類似的鞋子的圖片
深度學(xué)習(xí)的挑戰(zhàn)
使學(xué)習(xí)特征成為可能,而不是手動的去調(diào)節(jié)
卓越的性能提升:
- 計算機視覺
- 語音識別
- 一些文本分析
潛在更多的影響
深度學(xué)習(xí)工作流
mark需要大量的標注數(shù)據(jù),包含哪種狗。(人工標注)
- 劃分訓(xùn)練集和驗證集。學(xué)習(xí)深度神經(jīng)網(wǎng)絡(luò)之后進行驗證。
驗證發(fā)現(xiàn)不符合,我們又需要進行修改模型。我們需要不停的迭代
很多技巧可以讓結(jié)果更好
- 不同類型的層和連接
- 可以提供高準確率
不同特征的層和很多復(fù)雜的細節(jié)。
深度學(xué)習(xí)的劣勢
為了達到高準確率,需要非常多的數(shù)據(jù)
計算特別昂貴
非常難調(diào)節(jié)模型
- 架構(gòu)的選擇(層數(shù))
- 參數(shù)類型
- 元參數(shù)
- 學(xué)習(xí)算法
昂貴的計算成本+太多的選擇 = 模型非常難以調(diào)節(jié)
深度特征: 深度學(xué)習(xí) + 遷移學(xué)習(xí)
幫助建立神經(jīng)網(wǎng)絡(luò),甚至當(dāng)你沒有很多數(shù)據(jù)的時候都可以建立。
標準圖片分類方法
mark我們能不能從數(shù)據(jù)中學(xué)習(xí)特征。
遷移學(xué)習(xí): 應(yīng)用一個任務(wù)的數(shù)據(jù)來幫助學(xué)習(xí)其他任務(wù)
很老的方法
mark在你擁有很多的數(shù)據(jù)的時候,訓(xùn)練神經(jīng)網(wǎng)絡(luò)。
如果我們有一個區(qū)分貓和狗的任務(wù),我們訓(xùn)練了一個八層1600個參數(shù)的復(fù)雜網(wǎng)絡(luò)。
最后我們得到了一個非常準確的貓狗分類器。
假如我們有了新的任務(wù),此時我們只擁有很少量的數(shù)據(jù)。檢測椅子大象,相機等
我們使用從貓狗神經(jīng)網(wǎng)絡(luò)中學(xué)習(xí)到的特征再加上一個簡單的分類器,來獲取一個對于101個類別上的高準確率
這就是遷移學(xué)習(xí),我們在貓狗中學(xué)習(xí)到的特征可以被遷移到新的任務(wù)中。
神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)了什么?
mark我們更改一下學(xué)習(xí)方法。對于貓狗分類而言這個網(wǎng)絡(luò)非常準確。
最后的幾層: 主要用于貓和狗的分類。
就跟之前例子中最后一層進行顏色檢測
中間的層很一般化,代表角落檢測,彎彎曲曲的畫面等。
轉(zhuǎn)換學(xué)習(xí)細節(jié)
對于任務(wù)2,要預(yù)測101個類別,只需要學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的末端
mark把最后這一塊中專門針對貓和狗的部分剔除掉。
mark保持前面各層的權(quán)重固定。
mark利用這些特征再加上一個簡單的分類器。
我們就能用很少的椅子汽車大象等圖片數(shù)據(jù)來訓(xùn)練一個模型
mark注意分割點,后面的層可能太特定于任務(wù)了
應(yīng)用深度特征的遷移學(xué)習(xí)流程
mark深度特征的通用性有多強?
垃圾回收
mark垃圾車挨個回收路徑優(yōu)化。
深度學(xué)習(xí)總結(jié)
mark以前的回歸,分類,機器學(xué)
輸入圖像和相應(yīng)的標簽,標簽是要么是一只貓,要么是一只狗,或者是一個房子。
特征提取: 采用深度特征進行特征提取。
輸出的是圖片和圖片的深度特征X
使用機器學(xué)習(xí)模型來分類這類特征。拿出我們預(yù)測的標簽y帽子和真正的標簽y。在性能度量中。
y y帽子 性能度量取決于你的任務(wù)。(我們本次的任務(wù)中使用了分類準確率)
這時的w帽子才是真正的邏輯回歸的權(quán)重參數(shù)
機器學(xué)習(xí)要做的是保證分類準確率,嘗試改變和更新w帽子來使準確率更高
我們學(xué)到了
- 描述多層神經(jīng)網(wǎng)絡(luò)模型
- 解釋在計算機視覺中特征作為局部探測器的作用
- 神經(jīng)網(wǎng)絡(luò)和手動構(gòu)建的特征的關(guān)系
- 描述了深度學(xué)習(xí)獲得成功的一些場景
- 深度學(xué)習(xí)模型的優(yōu)勢和劣勢
- 應(yīng)用轉(zhuǎn)換學(xué)習(xí)的概念
- 應(yīng)用一個領(lǐng)域訓(xùn)練的神經(jīng)網(wǎng)絡(luò)作為特征來構(gòu)建另一個領(lǐng)域的模型
- 應(yīng)用深度特征構(gòu)建圖像檢索工具
深度學(xué)習(xí)實踐
見jupyter notebook
深度學(xué)習(xí)圖片檢索工具
總結(jié)
以上是生活随笔為你收集整理的6-机器学习启蒙- 深度学习: 图像搜索的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [编程题] 迷路的牛牛
- 下一篇: LeetCode - Medium -