色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 智能計(jì)算 > 設(shè)計(jì)應(yīng)用 > AI神奇魅力的源點(diǎn):相似度

          AI神奇魅力的源點(diǎn):相似度

          作者:高煥堂 時(shí)間:2024-03-13 來源:電子產(chǎn)品世界 收藏


          本文引用地址:http://cafeforensic.com/article/202403/456309.htm

          1 前言

          在本專欄去年的文章《從隱空間認(rèn)識(shí) 多模態(tài)模型》里,已經(jīng)介紹過了: 的核心設(shè)計(jì)概念是,把各文句和圖像映射到隱空間里的一個(gè)點(diǎn)( 以向量表示)。其針對(duì)每一個(gè)文句和圖像都會(huì)提取其特征,并映射到這個(gè)隱空間里的某一點(diǎn)。然后經(jīng)由矩陣計(jì)算出向量夾角的余弦(Cosine) 值,來估計(jì)它們之間的(Similarity)。

          此外,在 里扮演核心角色的點(diǎn)積注意力(Dot-Product attention) 機(jī)制,其先透過點(diǎn)積運(yùn)算,從Q與K矩陣計(jì)算出的其(Similarity) 矩陣,然后繼續(xù)計(jì)算出注意力(Attention) 矩陣。

          于是本期就從簡(jiǎn)單的出發(fā),再延伸到注意力機(jī)制,并循序漸漸地?cái)U(kuò)大為典型的 模型。然后就能理解當(dāng)今 等大模型的魅力源頭。例如,Sora 也采用注意力(Attention) 機(jī)制,以便于在影片生成過程中,能專注于文字提示的關(guān)注意圖。這確保了相關(guān)細(xì)節(jié)被優(yōu)先考慮,從而更準(zhǔn)確、更忠實(shí)地表示人們所期待的場(chǎng)景。

          2 簡(jiǎn)介余弦(Cosine)相似度

          當(dāng)人們看到事物( 如圖像) 的特征時(shí),很容易依據(jù)其特征來看出其相似性( 又稱:相似度),然后依據(jù)其特征的相似性,進(jìn)行分門別類。例如有三張圖像:

          1710375943361372.png

          圖1 三張簡(jiǎn)單圖像

          人們一眼就能分辨出來左邊兩張圖(img01與img02) 的色彩比較相近( 相似);而右邊圖與其他兩者就比較不相似。AI也具有這樣的能力,就是您已經(jīng)熟悉的AI分類器( 模型) 了。由于AI 經(jīng)常需要處理高維度的數(shù)據(jù),例如常將圖像、文句或文件表達(dá)為高維度歐式空間里的向量。此時(shí),就常常使用余弦相似度(Cosine Similarity) 算法??蓱?yīng)用于偵測(cè)圖像(Image) 之間的相似度( 又稱:相似性);也能應(yīng)用于計(jì)算兩個(gè)文句之間的相似度( 例如,同義詞等)。

          經(jīng)由這算法,可以計(jì)算出事物( 表達(dá)為向量) 之間的相似程度,其值介于[-1, 1] 之間。數(shù)值愈高就表示兩個(gè)向量愈相似。余弦相似度是基于兩個(gè)向量的夾角來度量的。其計(jì)算兩個(gè)向量之間夾角的余弦(Cosine) 值,來衡量它們之間的相似度。例如下圖:

          1710333693287022.png

          圖2 Consine相似度

          觀察上圖1-2里,其中的左上方的小圖里,兩個(gè)向量的夾角小于90 度,其余弦值大于0。而左下方的小圖里,兩個(gè)向量互相垂直,夾角是90 度,其余弦值等于0。至于右方的小圖里兩個(gè)向量的夾角大于90 度,其余弦值小于0。所以,余弦相似度的值是介于 -1與1之間。其值為-1,表示向量相反;其值為0,表示正交向量( 不相似);而其值為1,表示相似向量。

          上述圖1-2 的范例是在二維空間里,計(jì)算二維向量的余弦相似度。此外,在AI( 機(jī)器學(xué)習(xí)) 里常將圖像、文句或文件表達(dá)為高維度歐式空間里的向量。此時(shí),也非常適合用余弦值來表達(dá)這些高維向量之間的相似度。

          例如,從上圖-1 里的各小圖,取出其中心點(diǎn)( 像素)的RGB值,成為各小圖的特征,就得到三維空間里的3個(gè)向量:

          image.png image.png

          image.png

          圖3 萃取圖像特征

          RGB 值就成為各張圖的特征了,也即是三維空間里的3個(gè)向量:

          [ [255, 0, 0], [255, 105, 180], [0, 255, 0] ]

          那么,如何表示上述3 個(gè)向量之間的余弦相似度呢?

          3 認(rèn)識(shí)相似度矩陣(Matrix)

          首先來觀摩一個(gè)Python 小程序,其代碼如下:

          # simi_01.py

          import numpy as np

          from sklearn.metrics.pairwise import cosine_similarity

          # 定義三個(gè)3 維向量

          x = np.array([[255,0,0],[255,105,180],[0,255,0]])

          # 將向量歸一化,這對(duì)于計(jì)算cosine similarity 很重要

          normalized_x = x / np.linalg.norm(x, axis=1, keepdims=

          True)

          # 使用cosine_similarity 計(jì)算相似度

          similarity_matrix = cosine_similarity(normalized_x)

          print(“nCosine Similarity Matrix:”)

          print(‘n’, similarity_matrix)

          #END

          接著,就執(zhí)行這個(gè)程序。此時(shí)輸入3 維向量:[[255,0, 0], [255, 105, 180], [0, 255, 0]],然后計(jì)算出它們之間的余弦相似度,并輸出相似度矩陣:

          1710342456147740.png

          這個(gè)矩陣所表達(dá)的涵意是:

          1710342491284344.png

          請(qǐng)看最上面一列(Row) 數(shù)值的意義是:針對(duì)左邊圖像(紅色)而言,它與自己的相似度為1.0( 完全相似);它與中間圖像(粉紅色) 的相似度約為0.77( 很相似);而它與右邊圖像(綠色) 的相似度約為0.0( 不相似)。

          再看第二列數(shù)值的意義是:針對(duì)中間圖像(粉紅色)而言,它與左邊圖像(紅色) 的相似度約為0.77(很相似);它與自己的相似度為1.0(完全相似);而它與右邊圖像(綠色) 的相似度約為0.31(有一些相似)。

          余弦相似度矩陣是直接計(jì)算向量的點(diǎn)積(Dotproduct),即將兩向量對(duì)應(yīng)元素相乘再相加,再除以它們的歐氏長(zhǎng)度的乘積,這樣可以將相似度的值正規(guī)化,使之不受向量長(zhǎng)度的影響,即不考慮向量長(zhǎng)度,只考慮其夾角的余弦值。

          4 延伸到注意力權(quán)重(Attention-weights)

          剛才說明了,在計(jì)算余弦相似度時(shí),我們先計(jì)算向量之間的點(diǎn)積,再進(jìn)行正規(guī)化:除以它們的歐氏長(zhǎng)度的乘積。

          現(xiàn)在,我們將采取另一種途徑:先計(jì)算向量之間的點(diǎn)積,再計(jì)算出注意力權(quán)重(Attention-weights)?,F(xiàn)在,來觀摩一個(gè)Python 小程序,其代碼如下:

          #simi_02.py

          import torch

          import torch.nn as nn

          import torch.nn.functional as F

          # 定義三個(gè)3 維向量

          x = torch.tensor([

          [255, 0, 0],

          [255,105,180],

          [0, 0, 255]], dtype=torch.fl oat32)

          scores = x.matmul(x.T)

          # 使用Attention-weights

          attention_weights = F.softmax(scores, dim=1)

          print(“nAttention-weights:”)

          print(attention_weights)

          #END

          在注意力權(quán)重中,我們應(yīng)用 Softmax() 函數(shù),將點(diǎn)積相似度矩陣的每一行轉(zhuǎn)換為概率分布,以表示每個(gè)向量對(duì)于其他向量的關(guān)注程度。這可以看作是一種注意力權(quán)重。

          至于在余弦相似度中,不一定需要進(jìn)行Softmax()轉(zhuǎn)換,因?yàn)橛嘞蚁嗨贫韧ǔR呀?jīng)被正規(guī)化,它的范圍在-1到1之間,所以不需要再轉(zhuǎn)換為概率分布。于是,此程序執(zhí)行時(shí),就輸出注意力權(quán)重矩陣,如下:

          1710342614188861.png

          總之,注意力權(quán)重通常用于序列到序列模型的注意力機(jī)制,而余弦相似度,則更常用于評(píng)估向量之間的相似度而不涉及到注意力的權(quán)重分配。兩者的選擇取決于特定應(yīng)用的需求。

          1710342720727858.png

          5 結(jié)束語

          本期說明了余弦相似度與注意力權(quán)重的概念,以及其計(jì)算方法。下一期將繼續(xù)延伸到Self-Attention 機(jī)制、Cross-Attention機(jī)制和模型等。

          (本文來源于《EEPW》2024.3)



          關(guān)鍵詞: 202403 LLM 相似度 CLIP Transformer

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉