觀察AI模型的隱空間狀態(tài),探索潛在因子
1 前言
當我們在觀察AI模型的生成數(shù)據(jù)時,通常會比較關注于模型輸出層的結果。然而,觀察其隱藏層的數(shù)據(jù)也是非常有價值的。AI模型善于捕捉萬事萬物之間的關聯(lián)性或規(guī)律,因而成為探索人體、企業(yè)等復雜系統(tǒng)中潛在因子(Latent factors)的利器。在這些復雜系統(tǒng)中,其潛在因子是指無法直接觀察但影響系統(tǒng)行為的潛在變量或模式。例如,大家已經(jīng)很熟悉的自動編碼器(Autoencoder,簡稱AE)模型,它能透過學習數(shù)據(jù)的壓縮表示,來呈現(xiàn)復雜系統(tǒng)中的潛在模式和關系。這種功能使得AE模型在醫(yī)學研究、生理監(jiān)測或企業(yè)財務分析各領域中,都展現(xiàn)出高度的實用性。
在本文里,將說明如何透過可視化方法對模型的隱( 藏) 空間(Latent space) 狀態(tài)進行繪制而呈現(xiàn)于人們可觀察的二維空間里。這種表示可以呈現(xiàn)慢性病患者的分布情況、特定患者的健康狀況演變,因而在臨床環(huán)境中至關重要。在企業(yè)經(jīng)營中,擅用AI 模型來發(fā)現(xiàn)這些潛在因子,可以有效降低決策風險、優(yōu)化營運模式來大幅提企業(yè)的競爭力。
2 觀察<隱空間狀態(tài)> 的意義
隱空間狀態(tài)是指模型學習從輸入數(shù)據(jù)中捕獲的顯著特征,并表示于較低維度的隱空間里。所以我們可以藉由觀察模型的隱空間變量( 狀態(tài)) 來探索復雜系統(tǒng)的重要潛在因子,以便探索復雜系統(tǒng)的底層機制。例如,人體的健康狀況就是一個無法直接測量的變量,尤其是對于無法透過特定測試診斷的疾病( 如多發(fā)性硬化癥)。此時,AI 模型可以協(xié)助將不同的測試結合起來呈現(xiàn)出患者的健康狀況( 圖-1)。
圖1
此外,還能將觀察到的見解整合到商業(yè)智能工具、儀表板和報告系統(tǒng)中,以進行持續(xù)監(jiān)控和分析。
3 以VAE模型為例
例如,大家已經(jīng)很熟悉的變分自動編碼器(Variation autoencoder,簡稱VAE)模型,它能透過學習數(shù)據(jù)的壓縮表示,來呈現(xiàn)復雜系統(tǒng)中的潛在模式和關系。這種功能使得VAE模型在醫(yī)學研究、生理監(jiān)測或企業(yè)財務分析各領域中,都展現(xiàn)出高度的實用性。擅用VAE可以讓企業(yè)獲得更深入的見解,增強決策能力,并保持在各自行業(yè)的競爭優(yōu)勢。
使用VAE是為了產(chǎn)生與原始源數(shù)據(jù)相關的新數(shù)據(jù)。這VAE假設源數(shù)據(jù)具有某種潛在的機率分布(例如高斯分布),然后嘗試找到分布的參數(shù)( 圖-2)。
圖2
VAE模型從輸入數(shù)據(jù)(x)中學習,然后映射到隱空間。就如同觀察到一位華麗盛裝的小孩X,經(jīng)由Encoder 層過濾( 卸妝) 分析,得出其母體(Population) 平均值和標準偏差,其代表所屬家庭( 概率分布)。然后從家庭里隨機抽樣一位( 素妝) 小孩Z。再經(jīng)由Decoder 層生成(化妝) 之后,得出^x,比較看看^x 與x 的誤差值(Loss)。一直持續(xù)訓練,來降低誤差值。
4 演練:觀察簡單AE模型
現(xiàn)在來觀察簡單AE( 自動編碼器) 模型的訓練流程,以海中的< 魚群> 為例:
一開始,先從上述的魚群中萃取各條魚的特征(Feature):
有些情形下,也需要給予各條魚不同的編號(ID):
于是,得到一個數(shù)值化特征表,這就是要輸入給AE模型的訓練數(shù)據(jù)(X):
這AE模型從輸入數(shù)據(jù)(x)中學習, 然后經(jīng)由Encoder映射到隱空間,得出其母體的概率分布。然后從母體里隨機抽樣(Z)。再經(jīng)由Decoder 層生成之后,得出^x,一直持續(xù)訓練。訓練完成時,我們可以來觀察隱空間里的狀態(tài)。例如,以繪圖方式來呈現(xiàn)AI模型的隱空間狀態(tài)。請看看范例程序:
# example_01.py
import numpy as np
import torch
import torch.nn as nn
import torch.nn.functional as F
import matplotlib.pyplot as plt
class AE(nn.Module):
def __init__(self):
super(AE,self).__init__()
self.Enc1 = nn.Linear(3, 8)
self.Enc2 = nn.Linear(8, 2)
self.Dec1 = nn.Linear(2, 8)
self.Dec2 = nn.Linear(8, 3)
def forward(self, x):
h = self.Enc2(self.Enc1(x))
out = F.sigmoid(self.Dec2(self.Dec1(h)))
return out, h
model = AE()
lossF = nn.MSELoss()
opt = torch.optim.SGD(model.parameters(), lr=0.35)
----------------------------------
X = torch.tensor(
[[1,10, 5], [9, 2, 4], [8, 1, 3],
[3, 1,10], [5, 9, 7], [5, 8, 3],
[9, 2, 3], [2,10, 5], [1, 9, 4]
], dtype=torch.float32)
----------------------------------
dx = X/10
dt = dx
for ep in range(1000):
z, h = model(dx)
loss = lossF(z, dt)
opt.zero_grad()
loss.backward()
opt.step()
if(ep%200 == 0):
loss = loss.detach().numpy()
print(‘ep =’, ep,’, loss = ‘,np.round(loss,4))
----------------------------------
model.eval()
z, h = model(dx)
hh = h.detach().numpy()
map_color = {0: ‘r’, 1: ‘g’, 2:’b’, 3:’y’, 4:’k’, 5:’m’,
6:’c’,7:’pink’,8:’grey’,9:’blueviolet’}
color = list(map(lambda k: map_color[k], [0,1,
2,3,4,5,6,7,8]))
fig, ax = plt.subplots(1)
plt.scatter(hh[:, 0], hh[:, 1], c=color)
plt.show()
# End
當訓練完成時,就繪出圖形:
于是,觀察到隱空間狀態(tài)了。
圖-3
5 結束語
一般而言,搭配行業(yè)的專業(yè)知識,會更易于詮釋隱空間狀態(tài)的涵意。例如,醫(yī)藥專家擅用VAE 模型將復合編碼成196維的隱空間表示,來產(chǎn)生具有藥物發(fā)現(xiàn)感興趣的特性的新化合物(圖-3)。
此外,具有豐富的企業(yè)財務專業(yè)知識的經(jīng)理人,即能擅用AI模型來獲得深入的見解,增強其決策能力,來保持企業(yè)的競爭優(yōu)勢。在商業(yè)中的潛在因子則包括:市場趨勢、顧客偏好、競爭策略和投資風險等等。藉由觀察AI 模型的隱空間狀態(tài),來發(fā)現(xiàn)這些潛在因子來為企業(yè)決策提供信息、優(yōu)化流程并增強客戶體驗。
(本文來源于《EEPW》202410)
評論