1. 程式人生 > >神經網絡是如何擬合任意函數的

神經網絡是如何擬合任意函數的

區間 簡單 接下來 分段 技術 1-1 使用 條件 否則

一個最原始粗暴的擬合任意函數的思路,是將函數切成很多段線性函數,之後用邏輯門控制當x在哪一個區間時,某些邏輯門被激活,對應的線性函數的權重w與偏移量b在邏輯門的包裹下變成非0,計算出y在這一段的輸出值。

需要推導出擬合函數y=f(x)需要哪些邏輯門,以及如何使用神經網絡構建這些邏輯門。

首先最簡單的是開關門:

${s^{(1)}}(x) = t{\rm{ = Relu}}({\rm{1 - 1000*Relu}}({\rm{u}}))$

使用Relu激活函數構建的開關門比起使用sigmoid函數構建的開關門

${s^{(1)}}(x) = {\rm{\sigma (1000x)}}$

的作用是相同的,都是讓x>0時t=1,否則t=0

通過平移技巧:f(x-p)等價於f(x)平移+p距離,可以指定門的位置。

接下來是將開關門進行與/或組合,得到的門。

假如t1負責激活x>6, t3負責激活x>9,那麽定義t2 = t1 and (not t3) = ${s^{(1)}}( t1 - t3)$ ,即可用t2描述 6<x<=9的區間。

類似的,也可以定義t4 = t1 or t3 =

考慮任意函數,都可以被近似為多段線性函數。簡便起見,假設三段線性函數的兩個分割點是x=6以及x=9

技術分享

技術分享

b是偏移量,t是激活門,當x落在對應分段區間i內,激活門 t_i=1,否則t_i = 0

y的值可以分拆成ws的值與bt的值。下面畫出了bt與s的值。

技術分享技術分享

滿足上述t條件的公式有:

${t_i}{\rm{ = Relu(1 - 1000 * Relu(}}{{\rm{u}}_i}{\rm{)) }}$ 對於i=1, 2, 3

${u_1} = - 1000x + 6000$

${u_2} = 1000x - 9000$

${u_3} = - 1000{t_1} - 1000{t_3} + 500$

這裏通過Relu函數外加一層線性權重(w=-1000, b=1)構成了一個開關門 Relu(1-1000*Relu(x))。門的位置通過一層線性函數平移變換確定。

技術分享技術分享

神經網絡是如何擬合任意函數的