![](https://s4.itho.me/sites/default/files/styles/picture_size_large/public/field/image/fireshot_capture_795_-_introducing_tensorflow_similarity_-_the_tensorflow_blog_-_blog.tensorflow.org_.jpg?itok=VP3Z6wJW)
深度學習函式庫TensorFlow提供相似性(Similarity)功能,這是一個Python套件,讓TensorFlow開發者可以簡單地訓練相似性模型,開發推薦相似衣服,或是辨識當前播放歌曲等系統。官方提到,TensorFlow Similarity用起來相當簡單,在MNIST資料上訓練、索引和搜尋的小範例,只要不用20行程式碼就可以完成,而且即便使用次優模型,搜尋和配對結果仍然相當好。
尋找相似物品的能力,在現實世界中有各種應用,像是多媒體搜尋、推薦系統或是分類工作管線等,能夠快速檢索相關項目,是這類資訊系統的重要核心功能,TensorFlow Similarity如同其他這類系統,同樣使用對比學習(Contrastive Learning)技術,官方解釋,對比學習教模型學會一個嵌入空間,在這空間中相似的樣本很近,不同的樣本則很遠,屬於同一類的會被拉進在一起,不同的則被分離開來。
對比學習應用在整個資料集的時候,對比損失讓模型可以學習,將物件投影到嵌入空間中的方法,方便以嵌入之間的距離,來代表輸入樣本的相似程度。在訓練結束後,開發者就能夠獲得一個分類空間,相似的物件距離很近,不同則距離很遠。
接著對所有想要搜尋的項目嵌入建構一個索引,在查詢時,TensorFlow Similarity就能夠利用快速最相似鄰近搜索(Fast Approximate Nearest Neighbor),在次線性時間內,從索引中檢索最接近的相符項目。由於TensorFlow Similarity能夠藉由計算嵌入點的距離,就可以比對相似度,而距離度量滿足三角不等式,使得空間適合使用快速最相似鄰近搜索,進行高準確度檢索。
官方解釋,其他像是使用模型特徵擷取的方法,需要使用精確的最鄰近搜索(Nearest Neighbor Search,NNS),尋找相關的項目,但是又可能不如相似模型一樣精確,而且因為執行精確搜尋,需要花費搜尋索引平方次的時間,因此不適合大規模應用。TensorFlow Similarity內建最相似鄰近搜索索引系統仰賴NMSLIB,能夠搜尋數百萬個索引項目,並在數分之一秒內檢索前K項相似項目。
除了準確性和檢索速度的優勢之外,相似性模型的另一個主要優勢,是可以讓開發者在索引添加無限數量的新類別,而不需要重新訓練,只需要計算新類別中代表性項目的嵌入,並加到索引中就可以了,官方提到,這種動態添加新類別的能力,在解決未知且不斷變化的問題時特別有用,像是音樂應用能夠協助用戶,不斷發現喜歡的新歌曲。
TensorFlow Similarity提供所有必要的元件,讓開發者能夠直覺地進行相似性訓練評估和查詢,在本機支援上,TensorFlow Similarity添加了一種新的Keras模型SimilarityModel(),支援本機嵌入索引和查詢,供開發者快速地執行端到端訓練和評估。
TensorFlow Similarity支援Keras API,並且可使用現有Keras架構,官方表示,他們還會繼續發展TensorFlow Similarity,在現有基礎上,支援BYOL、SWAV和SimCLR等半監督式和自我監督方法。
熱門新聞
2024-08-28
2024-08-26
2024-08-30
2024-08-26
2024-08-27
2024-08-24