Sinkhorn算法是一種用於解決最優傳輸問題的疊代算法,它通過引入熵正則化項來改進傳統的推土機距離(Earth Mover's Distance, EMD),從而使得最佳化問題更加平滑,易於求解。
該算法的核心思想是通過交替更新行和列的縮放因子,逐步逼近最優的轉移方案。具體步驟如下:
初始化轉移方案。首先,需要初始化一個轉移方案P,這是一個n×m的矩陣,表示從機率分布μ到ν的轉移機率。通常可以使用均勻分布進行初始化,例如P=1nm1n×m。
更新行和列的縮放因子。在每次疊代中,會交替地更新行和列的縮放因子。會計算當前轉移方案P的行求和向量a和列求和向量b,然後根據這些向量更新縮放因子,直到滿足一定的收斂條件。
更新轉移方案。在每次疊代中,通過更新轉移方案P來逼近最優轉移方案。具體的更新公式是P=diag(a)Kdiag(b),其中diag(a)和diag(b)分別是行和列縮放因子的對角矩陣,K是表示轉移成本的矩陣。
通過這種方式,Sinkhorn算法能夠逐步最佳化轉移方案,以達到最優傳輸的目標。