文/曾慶良(阿亮老師)
是否曾遇過這樣情況:在與人交談時,對方的表情讓你難以理解到底是高興、難過,還是生氣?在人際交往中,讀懂他人的情緒對我們來說相當重要,這會影響我們的回應方式和互動。然而,並非每個人都擅長察言觀色,這可能導致溝通上的困難和誤解。
想像一下,如果能將臉部表情轉化為可量化的數據,是否能更準確地理解他人的情緒呢?讓我們一起學習如何將數學結合人工智慧(AI),解讀人類的情緒,把外在的情緒表情轉化為數學曲線,透過數學分析臉部肌肉的變化,並將數據以科技輔助做更加精準的判斷,建立關聯。
⊚利用曲線方程式 量化微笑嘴角弧線
當我們微笑時,臉部的肌肉會產生一系列有趣的變化。這些變化不僅僅是嘴角上揚,還包括眼睛、臉頰和額頭等部位的協同動作。我們如何用數學來描述這些複雜的表情呢?先來盤點我們臉部表情所涉及的主要感官和肌肉,以「微笑」為例:
●眼睛:微笑時,眼睛可能會微微瞇起,眼角上揚。
●嘴巴:嘴角上揚形成弧度,是微笑最明顯的特徵。
●臉頰:微笑時,臉頰的肌肉上提,使臉部輪廓發生變化。
●額頭:開心時,肌肉放鬆,皺紋減少。
我們試著用數學的函數曲線來描述嘴角的上揚。當我們微笑時,嘴角會形成一條弧線,這條弧線可以用數學中的曲線方程式來描述。例如,我們以拋物線來量化描述微笑:拋物線就是我們所說的二次曲線,可以用方程式y=ax2+bx+c來表示。我們可以將嘴角的弧度近似為一段拋物線。假設我們拍攝一張微笑的照片,並在照片上標記嘴角弧線的幾個關鍵點。
透過這些點,我們可以計算出嘴角的弧線,例如使用「迴歸」的方法找到最適合的拋物線方程式。經過計算,我們得到:y=-0.02×2+0.8,這個方程式量化描述了嘴角的微笑程度。接下來,我們就要找出這個方程式與微笑程度的關聯度了。
⊚加入肌肉曲線變化 定義不同程度的笑
所謂的斜率表示兩點間相連直線的傾斜程度。我們可以在上面這個微笑的曲線中找到相近的兩點計算出斜率,斜率可以反映嘴角上揚的幅度。例如:
●迷濛的笑:嘴角上揚角度較小,曲線斜率較平緩。
●開懷大笑:嘴角上揚角度較大,曲線斜率較陡。
透過計算曲線在不同點間的斜率,我們可比較不同程度的笑。例如在點C(x=0)處,開懷大笑的曲線斜率可能比輕微微笑的斜率大,這表示嘴角上揚得更多。如此,當數據愈多,我們對於數據比對所觀測到的結果後,即可以定量出對於「不同程度的笑」的定義了。
但是,人類的表情複雜,如何區分真心微笑與禮貌微笑呢?這時可以加入更多變因,例如我們可以加入對於眼部和臉頰肌肉曲線變化的觀測:
●真心微笑:眼角出現細紋,臉頰上提,曲率較大。
●禮貌微笑:主要是嘴角上揚,眼部和臉頰變化不大,曲率較小。
這裡所謂的曲率,就是描述一條曲線彎曲程度的數值。曲率愈大,曲線彎得愈厲害;曲率愈小,曲線愈接近直線。
透過計算眼角、臉頰上法令紋曲線的曲率,我們可以區分出真心微笑與禮貌微笑。例如,真心微笑時,眼角和臉頰的曲線曲率增加,這可以作為識別真實情緒的依據。不過,要將臉部表情轉化為數學模型並非易事,在過去,主要的挑戰有幾項:
●個體差異:每個人的臉部特徵和表情方式都不同,需要針對個體進行模型調整。
●三維空間的轉化:因為我們的臉部是三維,因此需要將三維的曲線投影到二維平面,但過程中可能會有資訊的損失或偏差。
●動態的變化:因為人的表情是連續變化,需要連續的捕捉數據才能精確描述。
現在,我們可以藉由科技解決這樣的問題。例如使用高速攝影機或深度學習感測器,精細地捕捉臉部肌肉的細微變化,然後再以數據處理軟體提取臉部關鍵點,進行數學模型的構建,最後計算數據得出結果。
⊚嘴與鼻尖 量化夾角 角度愈大 笑愈明顯
我們可以使用紅外線深度攝影機來捕捉臉部的三維數據,記錄臉部關鍵點在三維空間中的座標,讓我們更精確地分析臉部表情;假設我們選取了臉部的3個關鍵點:左嘴角(L)、右嘴角(R)、鼻尖(N),我們讓一位參與者在沒有微笑和微笑的情況下,各自拍攝一張照片,並取得這些關鍵點的座標(單位:毫米)。
這意味著嘴角相對於鼻尖的位置向上移動,與y軸的夾角變大,這符合我們對微笑時嘴角上揚的理解。
透過計算嘴角與鼻尖之間的夾角變化,我們可以量化微笑的程度,也就是角度增加表示嘴角上揚,微笑更明顯,能清楚地解釋如何利用三維座標和數學計算來量化微笑,進而透過人工智慧科技的輔助,精確地捕捉臉部的細微變化,並用數學模型進行分析,為AI的情緒辨識提供可靠的數據基礎。
⊚給予文字分數 情緒也能量化
情緒不僅表現在外顯的表情,還可以從人們撰寫的文字中體現出來。將文字轉化為數據,我們能更全面地分析人們的情緒表達。這不僅有助於了解消費者的反應,還能應用於心理健康監測、社會輿情分析等領域。那麼,我們可以如何利用數學和AI,從文字中分析情緒呢?
首先需要將文字中的情緒轉化為可量化的數據,可透過定義一些情緒指標來實現。例如:
●情緒詞彙計數:統計文章中正面或負面情緒詞的數量。
●詞彙情緒分數:為每個詞彙賦予一個情緒分數,正面詞給予正分,負面詞給予負分。
●句法結構分析:分析句子的結構,判斷語氣的強烈程度,如感嘆句、疑問句等。
我們可先建立一個「情緒詞典」。這個詞典包含大量的詞彙,並為每個詞彙標註其情緒屬性和強度。例如:
正面詞彙:開心(+2)、喜愛(+3)、精彩(+2)
負面詞彙:生氣(-2)、失望(-3)、糟糕(-2)
假設我們有一則社群貼文:「今天的天氣真好,心情也跟著愉快起來!期待週末的旅行。」可以按照以下步驟進行情緒分析:
步驟1:詞彙分割
先將句子切分成單詞,所以變成:[今天]、[的]、[天氣]、[真好]、[,]、[心情]、[也]、[跟著]、[愉快]、[起來]、[!]、[期待]、[週末]、[的]、[旅行]。
步驟2:匹配情緒詞彙
可以由情緒詞典中找出匹配的詞彙:正面詞彙:[真好](+2)、[愉快](+3)、[期待](+2),負面詞彙為0。
步驟3:計算情緒分數
將匹配到的情緒詞彙分數相加。
總情緒分數:2(真好)+3(愉快)+2(期待)=7
最後我們可以根據總分數的正負來判斷情緒是正面還是負面,這個例子中,由於總分數為正,且數值較高,可判斷為「強烈的正面情緒」。
有了人工智慧的加持後,我們可以運用機器學習和深度學習技術,讓AI從大量的文本數據中學習情緒特徵。我們可以先收集大量已標註情緒的文本,作為模型的訓練資料,而後使用數學方法將文字轉化為數值特徵,如詞類出現的頻率。最後運用合適的AI演算法來訓練情緒分類模型,完成後就可以運用這樣的模型來辨識文字的情緒傾向。
不過,因為文字有時不若表面呈現的那樣,有些文字表面是正面的,但實際上卻是負面的(例如:「這服務真是太棒了,我等了兩個小時才輪到。」),或者同一個詞在不同語境下可能有不同的情緒含義(例如:「今天去的這一家店的服務人員總是非常「冷」的面對我們的需求」),這可能會讓AI難以辨識而造成情緒上的誤判,要解決這樣的問題有賴透過語言模型的「預先處理」(例如:預先輸入大量的詞彙來做分群歸納等方式),才能提高其對於文本情緒的辨識能力了。
⊚作者為教育部高中數學學科中心研究教師、台北市3A教學基地中心主任,獲北市特殊優良教師