relu函數為分段線性函數,為什么會增加非線性元素
我們知道激活函數的作用就是為了為神經網絡增加非線性因素,使其可以擬合任意的函數。那么relu在大於的時候就是線性函數,如果我們的輸出值一直是在大於0的狀態下,怎么可以擬合非線性函數呢?
relu是非線性激活函數
題主的疑問在於,為什么relu這種“看似線性”(分段線性)的激活函數所形成的網絡,居然能夠增加非線性的表達能力。
1、首先什么是線性的網絡,如果把線性網絡看成一個大的矩陣M。那么輸入樣本A和B,則會經過同樣的線性變換MA,MB(這里A和B經歷的線性變換矩陣M是一樣的)。
2、的確對於單一的樣本A,經過由relu激活函數所構成神經網絡,其過程確實可以等價是經過了一個線性變換M1,但是對於樣本B,在經過同樣的網絡時,由於每個神經元是否激活(0或者Wx+b)與樣本A經過時情形不同了(不同樣本),因此B所經歷的線性變換M2並不等於M1。因此,relu構成的神經網絡雖然對每個樣本都是線性變換,但是不同樣本之間經歷的線性變換M並不一樣,所以整個樣本空間在經過relu構成的網絡時其實是經歷了非線性變換的。
3、還有一種解釋就是,不同樣本的同一個feature,在通過relu構成的神經網絡時,流經的路徑不一樣(relu激活值為0,則堵塞;激活值為本身,則通過),因此最終的輸出空間其實是輸入空間的非線性變換得來的。
4、更極端的,不管是tanh還是sigmoid,你都可以把它們近似看成是分段線性的函數(很多段),但依然能夠有非線性表達能力;relu雖然只有兩段,但同樣也是非線性激活函數,道理與之是一樣的。
5、relu的優勢在於運算簡單,網絡學習速度快
解釋的比較好