Wide & Deep 神經網絡
2016年谷歌公司的Cheng等人發表的文章Wide & Deep Learning for Recommender Systems介紹了一種新的架構,Wide & Deep ANNs.
通過將輸入層的部分或全部信息直接與輸出層相連接,簡單的特征可以通過捷徑(short path)進行學習,復雜的特征則通過深層路徑(deep path)進行學習。與典型的多層感知機(MLP)結構相比,這種架構可以避免數據集中的簡單特征在深層路徑中被過度處理而失真。
Keras實現
Wide & Deep 神經網絡實現起來非常簡單,Aurélien Géron的經典教材Hands-On Machine Learning with Scikit-Learn and TensorFlow給出了一段源碼。書中源代碼有錯誤,這里給出正確的。
input=keras.layers.Input(shape=X_train.shape[1:])
hidden1=keras.layers.Dense(30,activation="relu")(input)
hidden2=keras.layers.Dense(30,activation="relu")(hidden1)
concat=keras.layers.concatenate([input,hidden2])
output=keras.layers.Dense(1)(concat)
model=keras.Model(inputs=[input],outputs=[output])