為什么人工智能tensorflow運算是以矩陣運算作為基礎的?
tensorflow作為深度學習框架,背后的理論以矩陣運算為基礎
矩陣運算,能極大加速計算過程,如果不用矩陣運算,模型訓練時間太長
理論基礎和對速度的要求,使得以矩陣運算成為必然。深度學習的理論基礎以矩陣為基礎tensorflow是Google開發的深度學習框架,而深度學習,作為一種數學模型,是以數學為基礎的,具體來講是以線性代數和概率論為基礎。而矩陣和張量 (Tensor, 對,就是Tensorflow中的Tensor)是線性代數的基本數學概念。
優化算法中的最速下降法離不開對矩陣求導深度學習絕大多數都是監督學習,或者想辦法轉為監督學習,比如貓狗分類、銷量預測等等。深度學習作為機器學習的一種,優化算法本質上是梯度下降法,對應數學的最速下降法。
看看回歸中的求導算法:
背后求導都是基于矩陣的,會涉及矩陣的求逆、懲罰運算等。
深度學習中的基本模塊離不開矩陣運算以近兩年自然語言處理中火熱的BERT模型為例,里面的模型架構都已 Transformer為基礎,看看這個模型的內部結構:
里面的線性層(Linear)本質上就是兩個矩陣的相乘, 注意力機制模型 (Attention)見下面兩幅圖,明顯也是矩陣相乘(MatMul)緊密相關。
矩陣(張量)運算可以加速訓練計算機硬件本質上是對應的都是電路,背后都是數字的加減乘除基本運算,最底層是信號的與或非等基本電路。
理論上而言,也不可以用矩陣,直接用標量寫個多重For循環計算,但是這樣速度太慢。
而利用向量化能明顯加速計算過程,python中常用numpy背后都是以向量化為基礎的矩陣運算。
再進一步到英偉達的GPU或者Google的TPU, 用專門的芯片來專門做矩陣運算。見下圖,是16年某論文的截圖,可以看到對GPU而言,在k=[0, 128]區間范圍內,對上千維的矩陣相乘(2560×2048, 2048×k),時間是恒定不變的,可見 GPU對矩陣運算的加速能力。