注:原創不易,轉載請務必注明原作者和出處,感謝支持!
一 寫在開頭
1.1 本文內容
機器學習中的一個小概念——哈達馬乘積(Hadamard Product)及其性質。
二 哈達馬乘積(Hadamard Product)
2.1 哈達馬乘積定義及其性質
對於兩個同為\(m \times n\)階的矩陣\(A\)和\(B\),則\(A\)和\(B\)的哈達馬乘積定義為:
\[(A \circ B)_{i,j} = (A)_{i,j}(B)_{i,j} \]
比如,這是一個哈達馬乘積的實例:
\[\left[ \begin{array}{ccc} a_{11} & a_{12} & a_{13}\\ a_{21} & a_{22} & a_{23}\\ a_{31} & a_{32} & a_{33} \end{array} \right] \circ \left[ \begin{array}{ccc} b_{11} & b_{12} & b_{13}\\ b_{21} & b_{22} & b_{23}\\ b_{31} & b_{32} & b_{33} \end{array} \right] = \left[ \begin{array}{ccc} a_{11}\times b_{11} & a_{12}\times b_{12} & a_{13}\times b_{13}\\ a_{21}\times b_{21} & a_{22}\times b_{22} & a_{23}\times b_{23}\\ a_{31}\times b_{31} & a_{32}\times b_{32} & a_{33}\times b_{33} \end{array} \right] \]
注意,哈達馬乘積要求矩陣\(A\)和\(B\)必須具有相同的階。
易知,哈達馬乘積具有如下的性質:
\[A \circ B = B \circ A \]
\[A \circ (B \circ C) = (A \circ B) \circ C \]
\[A \circ (B + C) = A \circ B + A \circ C \]
2.2 哈達馬乘積的應用
在深度學習框架TensorFlow中有計算哈達馬乘積的API——tf.multiply()。下面是在TensorFlow中的一個具體實例。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import tensorflow as tf
x = tf.constant([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
with tf.Session() as session:
print(session.run(tf.multiply(x, x)))
'''輸出結果為:
[[ 1 4 9]
[16 25 36]
[49 64 81]]
'''