華為在手機(jī)上,率先實(shí)現(xiàn)本地端自然語言搜圖功能
習(xí)慣了搜索引擎的我們,在手機(jī)上找本地文件的時候往往卻束手無策:如今每個人的智能手機(jī)上,存上千張照片已是常態(tài),有時候想找某張具體的照片就像大海撈針。
不過在今年華為的 P60 系列發(fā)布會上出現(xiàn)了這樣一項(xiàng)功能 —— 智慧搜圖,基于多模態(tài)大模型技術(shù)在端側(cè)輕量化應(yīng)用,手機(jī)上第一次有了自然語言圖片搜索能力。既然是自然語言,就意味著在找圖這件事上可以對手機(jī)講人話了。
如果記不得想找的照片是何時何地拍攝的,只大概記得照片中出現(xiàn)的人或物怎么辦?只要把能想到的幾個詞寫到搜索框里,智慧搜索就能給你找到:
或者用語音喚醒小藝用一句話形容想要找的照片內(nèi)容,比如搜索「去年在長白山滑雪的照片」,就可以直接找到手機(jī)里所有那次去玩的照片:
再進(jìn)一步,你也可以搜索「騎自行車的人」、「戶外的聚會」等描述性的概念。
相比以前基于標(biāo)簽的照片搜索方式,智慧搜圖可以讓手機(jī)更加「聰明」,響應(yīng)速度更快,輸出結(jié)果更高效。結(jié)合多模態(tài)語義模型技術(shù),華為的智慧搜圖在云端對上億級圖文數(shù)據(jù)進(jìn)行了預(yù)訓(xùn)練,對更通用化的語義擁有了理解能力。更重要的是,模型部署在端側(cè),搜索計(jì)算是在本地完成的,進(jìn)一步保護(hù)隱私安全。
這不禁讓人懷疑,華為的手機(jī)是不是已經(jīng)有了破除圖形驗(yàn)證碼的能力?
手機(jī)自然語言搜圖,為啥這么難?
以前在很多手機(jī)上,你可以通過輸入時間、人物、地點(diǎn)等關(guān)鍵詞找到想要的特定照片。這是通過 AI 算法識別圖片類型和文字,以及地理信息等文件固有標(biāo)簽來實(shí)現(xiàn)的,不過一般來說,它們只能識別出有限的類別。
在使用「常規(guī)」方法時,你需要通過短標(biāo)簽及其組合進(jìn)行搜索,例如「風(fēng)景」、「貓」、「食物」等等,手機(jī)支持的短標(biāo)簽數(shù)量有限,只能滿足你的一小部分意圖,大部分時候還是需要手動去相冊里翻找,效率很低。
圖片
標(biāo)簽都給你打好了,但選擇的種類有限。
這并不奇怪,因?yàn)樵谒暮蠖隧敹嗍呛唵蔚膱D像識別模型,搜索的自由度趨近于無,當(dāng)然也不能理解人的意圖。在使用這樣的系統(tǒng)時,有時候結(jié)果會變成讓我們猜模型到底能識別哪些標(biāo)簽。
要想實(shí)現(xiàn)「智慧搜圖」,AI 模型需要能同時理解自然語言與圖像兩種模態(tài)的數(shù)據(jù),而在手機(jī)上,我們還需要使用一系列壓縮算法盡可能利用有限的算力,并從工程角度盡量加快推理速度。
具體而言,先不管部署到手機(jī)端的困難,要想實(shí)現(xiàn)對圖片和文本的語義級理解,讓手機(jī)自己「看懂照片」,我們需要經(jīng)歷一段三步走的過程。
圖片
物理世界產(chǎn)生的非結(jié)構(gòu)化數(shù)據(jù)如圖片、語音和文本,在 AI 算法中會被轉(zhuǎn)化為結(jié)構(gòu)化的多維向量,向量標(biāo)識出關(guān)系,檢索就是在計(jì)算向量之間的距離,通常距離越近相似度就越高。
構(gòu)建智慧的搜圖技術(shù),首先需要訓(xùn)練多模態(tài)語義模型,通過對比學(xué)習(xí)令相同語義的文字與圖片距離特別近,不同語義的數(shù)據(jù)距離特別遠(yuǎn),從而把自然語言及圖片等多模態(tài)數(shù)據(jù)轉(zhuǎn)換成相同語義空間下的向量;其次,我們需要使用該多模態(tài)模型編碼被檢索的圖片;最后當(dāng)我們輸入一句話時,手機(jī)就會通過檢索系統(tǒng)快速地定位與內(nèi)容相匹配的圖片了。
在整個語義搜圖的過程中,首要的挑戰(zhàn)是如何更好地將語義相同的圖片與文字匹配起來。多模態(tài)模型需要編碼用戶的個人圖片,最好是將模型部署在手機(jī)端側(cè),而部署到手機(jī)端,就意味著必須對多模態(tài)模型進(jìn)行壓縮與加速,這里將需要大量的工程實(shí)踐。
業(yè)界首個手機(jī)端多模態(tài)語義模型
這個「智慧搜圖」的背后,是華為通過輕量化的多模態(tài)語義模型,讓手機(jī)可以高效理解自然語言和照片含義,實(shí)現(xiàn)了業(yè)界首個可端側(cè)部署的輕量化多模態(tài)語義模型。相比傳統(tǒng)打標(biāo)簽的方式,它的體驗(yàn)可是要好太多了。我們不再需要猜測圖片的標(biāo)簽,直接輸入自然語言就能檢索到對應(yīng)的圖片。毫不夸張地說,它讓手機(jī)本地搜圖,從難用跳到了好用。
基礎(chǔ):多模態(tài)模型
在人工智能領(lǐng)域里,Transformer 是個里程碑式的技術(shù),它既催生了 ChatGPT 這樣的 NLP 技術(shù)突破,也在視覺領(lǐng)域上擁有非常不錯的效果。通過 Transformer 對文本與圖片同時進(jìn)行表征,再通過弱監(jiān)督對比學(xué)習(xí)拉近相同語義的圖片與文字,拉遠(yuǎn)不同語義的圖片與文字,我們就能獲得一個不錯的多模態(tài)模型。
這其中的重點(diǎn)在于對比學(xué)習(xí),如下圖所示,常規(guī)的對比學(xué)習(xí)方法會將圖片與文本分別編碼為不同的向量,并將該向量映射到聯(lián)合多模態(tài)語義空間之中。因?yàn)椴煌B(tài)的數(shù)據(jù)表示之間可能存在差異,無法進(jìn)行直接的比較,因此先將不同模態(tài)的數(shù)據(jù)映射到同一個多模態(tài)空間,從而有利于后續(xù)的模型訓(xùn)練。
圖片
選自 arxiv: 2102.12092。
在多模態(tài)的對比學(xué)習(xí)中,其目標(biāo)函數(shù)即讓正樣本對(上圖藍(lán)框部分,I1T1、I2T2... )相似度很高,負(fù)樣本對(上圖白框部分)相似度很低。通過這種訓(xùn)練,自然語言天然就能和圖像匹配上,不同模態(tài)的數(shù)據(jù)就能對齊。
為了提升模態(tài)間的對齊效果,華為通過提高正樣本的相關(guān)性,并在算法層面對負(fù)樣本去噪,再借助更大、更高質(zhì)量的數(shù)據(jù)源,提升模型表征的準(zhǔn)確性,從而提升語義搜索的準(zhǔn)確性和召回率。與以往基于有限的標(biāo)簽集合給圖片打標(biāo)簽,再通過標(biāo)簽來進(jìn)行搜索的方式相比,基于語義表征進(jìn)行搜索的方式能大幅提升圖片檢索的靈活性。
優(yōu)化:模型的極致壓縮
多模態(tài)是當(dāng)前非常熱門的 AI 研究領(lǐng)域,但除了華為的「智慧搜圖」,還沒有人能把整個推理過程都部署到手機(jī)端。其中的工程難點(diǎn),顯然在于如何將多模態(tài)模型在效果基本無損失的情況下,壓縮到能在手機(jī)等邊緣設(shè)備上運(yùn)行。
在這里,也許我們需要考慮整個模型架構(gòu)的參數(shù)效率,優(yōu)化模型結(jié)構(gòu)以在最小的計(jì)算量上達(dá)到最優(yōu)的效果。例如卷積神經(jīng)網(wǎng)絡(luò)中 EfficientNet,Transformer 類模型中的 Multi Query Attention,它們都嘗試優(yōu)化模型結(jié)構(gòu)以令參數(shù)效率達(dá)到更優(yōu)?!钢腔鬯褕D」也一樣,通過優(yōu)化多模態(tài)模型架構(gòu),使得整體訓(xùn)練能獲得更好的效果。
除了技術(shù)上的更新,部署到移動端更大的挑戰(zhàn)還是在工程上。與平常我們在 GPU 上訓(xùn)練與推理模型不同,移動端缺少便捷高效的算子實(shí)現(xiàn),優(yōu)化起來也困難重重。舉例來說,手機(jī)端的 CPU 芯片基本是精簡指令集 Arm 架構(gòu)的,那么機(jī)器學(xué)習(xí)編譯器在做優(yōu)化時就需要考慮很多指令層面并行處理,來最大程度利用有限的計(jì)算力。
針對底層硬件的優(yōu)化適配,華為將模型的海量矩陣乘法分解到手機(jī)端 CPU 與 NPU 等設(shè)備上,并通過圖算融合等方式構(gòu)建出能在手機(jī)端高效運(yùn)行的底層算子,進(jìn)而支持整個模型的高效推理。
總結(jié)來說,華為「智慧搜圖」輕量化模型通過更多的數(shù)據(jù)、更優(yōu)的算法等補(bǔ)償性設(shè)計(jì)及一些模型輕量化技術(shù),首次將多模態(tài)模型部署到手機(jī)端,從而提供更好的圖搜體驗(yàn)。
實(shí)用:向量檢索引擎
我們期望通過圖片信息、時空維度等不同線索,快速找到與心中期待相符的圖片,而圖片與自然語言請求都是多模態(tài)語義空間的向量。因此,華為面向端側(cè)場景自研輕量級向量檢索引擎,支持對海量數(shù)據(jù)進(jìn)行向量索引構(gòu)建,且支持時空(時間、地點(diǎn))語義一站式融合檢索,可以便捷、高效地通過 Query 語義特征找出匹配的照片。
上圖是一個簡單的向量檢索引擎,假設(shè)移動端多模態(tài)模型已經(jīng)將相冊內(nèi)的圖片編碼為一條條向量,并持久化存儲到「Vector Database」中。每當(dāng)用戶有需要搜索的請求,該請求將通過「Embedding Model」,即多模態(tài)模型中的文本 Encoder 部分,將文本編碼為一條向量,該向量會從向量數(shù)據(jù)庫中搜索以找到一批最接近的圖像。
為了在移動端獲得更好的搜圖效果,華為自研的輕量化向量檢索引擎做了一系列創(chuàng)新與優(yōu)化。
在構(gòu)建索引時,如果采用云側(cè)常用的離線定期全量構(gòu)建的方式,將會顯著的增加功耗開銷,因此華為在手機(jī)端采用增量實(shí)時寫入的方式。并且出于可靠性目的,增量寫入的數(shù)據(jù)會持久化到索引中。
同時,為了提高索引加載和檢索的效率,索引的格式也是特別定制的,語義向量檢索將地點(diǎn)、時間等信息作為索引的一部分,在檢索時可以快速實(shí)現(xiàn)條件過濾,并返回與查詢語句最相關(guān)的結(jié)果。只要關(guān)鍵字落在時間、地點(diǎn)等常見搜索條件,索引格式創(chuàng)新帶來的加速,相比純數(shù)據(jù)庫檢索,能快十多倍。
但定制化的索引格式也會帶來一些困難,即新寫入的索引數(shù)據(jù)不一定都保存在索引的尾部。例如在故宮新拍了一張照片,那么該照片向量的索引,需要插到同地點(diǎn)的那一部分索引當(dāng)中,也就導(dǎo)致之前所有的索引都需要覆蓋重寫一遍。尤其是數(shù)據(jù)越來越多,如果我有十萬張圖片,難道每次拍一張照,十萬多條索引都需要重寫一遍?
在這里,華為再次找到了創(chuàng)新解法,其采用索引分段及壓縮合并兩種方式進(jìn)行優(yōu)化,索引分段能顯著降低單次插入索引時間,通過定期進(jìn)行壓縮合并,完成已刪除數(shù)據(jù)占用內(nèi)存 / 磁盤資源的回收,達(dá)到了顯著降低資源開銷的目的。
一系列優(yōu)化后,智慧搜圖的能力也不僅限于高配置的旗艦級手機(jī)。除目前的 P60 系列和 Mate X3 之外,更多設(shè)備未來也會隨 HarmonyOS 3.1 的升級陸續(xù)獲得這樣的能力。
智慧搜索:打造 HarmonyOS 生態(tài)的系統(tǒng)級入口
當(dāng)然,最新的 HarmonyOS 3.1 版中,智慧搜圖只是眾多新能力的一小部分。光是搜索上,華為就帶來了不少黑科技。
除了智慧搜圖之外,華為智慧搜索將不斷跨越不同 App、端側(cè)設(shè)備、云端和本地的邊界,實(shí)現(xiàn)真正意義上的全局搜索,結(jié)合華為長期實(shí)踐的「軟硬芯云一體化」能力,讓端側(cè)預(yù)置 AI 模型實(shí)現(xiàn)毫秒級響應(yīng)速度,消除跨終端聯(lián)動的延遲感,實(shí)現(xiàn)「多臺設(shè)備合體」的搜索體驗(yàn)。
現(xiàn)在是以 App 為主的移動互聯(lián)網(wǎng)時代,搜索有很大一部分已從網(wǎng)頁轉(zhuǎn)移到了更封閉的 App 上,華為智慧搜索卻可以做到從一站式的入口獲取全局內(nèi)容,打破信息孤島。
在打通所有邊界之后,華為還通過 AI 技術(shù)實(shí)現(xiàn)了高效率的服務(wù)流轉(zhuǎn)和更聰明的「意圖搜索」能力。讓搜索引擎理解人的意圖,提供最合適的智慧服務(wù),手機(jī)上的搜索框再也不是簡單的查詢工具。
還記得四年前華為在開發(fā)者大會上發(fā)布的初版 HarmonyOS 嗎?當(dāng)時 HarmonyOS 的定義是一個全場景分布式系統(tǒng),現(xiàn)在的 HarmonyOS 已經(jīng)發(fā)展出了豐富的生態(tài),下一步要做的則是統(tǒng)一:通過系統(tǒng)級能力的提升做到一個框架,掌控全局。
這種整合落到搜索上,就是無感知的大范圍能力調(diào)用和響應(yīng),華為內(nèi)部將其稱為「全搜」能力。智慧搜索或?qū)⒊蔀?HarmonyOS 生態(tài)的系統(tǒng)級入口,帶來遠(yuǎn)超搜索框定義的功能與服務(wù)。
當(dāng)需求不再被設(shè)備和形式所限制,一切以人為中心,這才是萬物互聯(lián)時代該有的樣子。這也讓我們對下一個 HarmonyOS 的產(chǎn)品,充滿了期待。