機器學習Lesson 19 — 使用 BatchEnsemble 同時訓練多個神經網路

施威銘研究室
4 min readMay 30, 2022

--

集成式學習(Ensemble Learning)是透過整合大量基學習器(Base Learner),來達到更好的模型效能。然而,集成式學習常見的問題,便是訓練時間太長。今天,我們要來介紹一篇論文提出的 BatchEnsemble,可以讓你在同一張 GPU 或是 CPU 上面平行訓練多個基學習器!

一、簡單神經網路

我們先來看一個簡單的神經網路:輸入 X 是 3 個元素的陣列,輸出 Y 是 2 個元素的陣列。這邊我們先只看神經網路的權重(Weight),偏值(Bias)就先不理(或是大家可以將 X 的第一個元素視為常數 1,作為偏值)

圖一、簡單神經網路。

我們把 X 的每個元素相關的權重擺成一個列向量,將所有神經元的向量擺在一起就成了如下矩陣。

因此,我們可以透過矩陣運算,得到輸出 Y。

二、BatchEnsemble 的基本想法

對於每一個基學習器,都有一個元素個數為 3 的行向量,以及一個元素個數為 2 個列向量。我們將這 2 個向量乘開後,也會得到一個 3 乘 2 的矩陣,本文稱這個矩陣為 Fast Matrix。

而基學習器的真正權重,是上述 Fast Matrix 跟一個與所有基學習器共用的矩陣(本文稱 Share Matrix)組合而成:

其中,圓圈的運算為 Hadamard product,也就是個別元素相乘。我們可以進一步拆解這個運算過程:

三、實現平行運算

現在,假設我們有 2 個基學學習器,現在將 2 個基學習器的 Fast Matrix 中的列向量,以列的方式排在一起,然後跟 X 矩陣做 Hadamard product。

接著跟 Share Matrix 做矩陣乘法。

最後在將 2 個基學習器的 Fast Matrix 中的行向量,以列的方式排在一起,然後做 Hadamard product。

如此一來,我們就可以在同一張 GPU 上面,透過矩陣乘法以及 Hadamard product,同時計算數個基學習器囉!

參考資料

Wen, Yeming & Tran, Dustin & Ba, Jimmy. (2020). BatchEnsemble: an Alternative Approach to Efficient Ensemble and Lifelong Learning.

關於作者

Chia-Hao Li received the M.S. degree in computer science from Durham University, United Kingdom. He engages in computer algorithm, machine learning, and hardware/software codesign. He was former senior engineer in Mediatek, Taiwan. His currently research topic is the application of machine learning techniques for fault detection in the high-performance computing systems.

--

--

施威銘研究室
施威銘研究室

Written by 施威銘研究室

致力開發AI領域的圖書、創客、教具,希望培養更多的AI人才。整合各種人才,投入創客產品的開發,推廣「實作學習」,希望實踐學以致用的理想。

No responses yet