㈠ LSTM神经网络输入输出究竟是怎样的
关于如何输入的问题,LSTM是一个序列模型,对于输入数据也是一个序列,LSTM每个时间版步处理的是序列中权一个时刻的输入,比如你当前输入是一个汉字“我”,因为模型只能接受的是数值向量,因此需要embedding,“我”就需要变成了一个向量,假如是[0.1,0.8,3.2,4.3](通过wordembedding技术获得),这里向量维度是4,那么就需要4个神经元去接收向量中的每个元素,而这四个神经元就构成了当前时刻的LSTMUnit,其他时刻也是这样,从而完成输入。因此就可以知道输入层神经元(LSTMunit中神经元数)的个数等于词向量的size。
㈡ LSTM鐨勫熀纭鐭ヨ瘑
LSTM锛岄暱鐭鏈熻板繂缃戠粶鐨勯瓟娉
鎯宠薄涓涓嬶紝澶勭悊鏃堕棿搴忓垪鏁版嵁鐨勮秴绾ц嫳闆勨斺擫STM锛屽畠鐨勫瓨鍦ㄥ氨鏄涓轰簡鐮磋В闀夸緷璧栨х殑璋滈樸傜敱璁板繂缁嗚優銆佽緭鍏ラ棬銆佽緭鍑洪棬鍜岄仐蹇橀棬缁勬垚鐨勫嶆潅缁撴瀯锛屾f槸瀹冪殑绉樺瘑姝﹀櫒锛屼负RNN鐨勬搴﹂棶棰樻壘鍒颁簡瑙e喅鏂规堛傚湪閲戣瀺棰勬祴鐨勬旦娓烘槦娴蜂腑锛孡STM濡傚悓瀵艰埅鐏锛屾崟鎹夊巻鍙茬殑鑴夊姩锛岄傚簲甯傚満鐨勫崈鍙樹竾鍖栵紝灏界℃洿楂樼殑璁$畻澶嶆潅搴︽槸瀹冪殑鎸戞垬锛屼絾缁撳悎鍏朵粬鎶鏈锛屽畠鐨勭簿鍑嗗害鐘瑰傛槦杈板ぇ娴疯埇娣变笉鍙娴嬨
璁板繂缁嗚優锛孡STM鐨勬牳蹇冩墍鍦锛屽傚悓涓搴т俊鎭鐨勫疂钘忥紝鐢辫緭鍏ラ棬銆侀仐蹇橀棬鍜岃緭鍑洪棬宸у欏湴鎺у埗鐫淇℃伅鐨勮繘鍑哄拰鏇存柊銆傚弻鍚慙STM鍜屾繁搴﹀弻鍚慙STM鍒欏傚悓鍗囩骇鐗堢殑瓒呯骇鑻遍泟锛屽簲瀵规洿澶嶆潅鐨勬椂绌烘寫鎴樸備粠鏂囨湰鐢熸垚鐨勭咯缈╄捣鑸烇紝鍒拌闊宠瘑鍒鐨勭粏寰宸鍒鎹曟崏锛屽啀鍒版満鍣ㄧ炕璇戠殑璺ㄨ瑷娌熼氾紝LSTM鐨勮Е瑙掓棤澶勪笉鍦锛岃瘉鏄庝簡瀹冨湪鍚勪釜棰嗗煙鐨勫崜瓒婅〃鐜般
鐒惰岋紝LSTM骞堕潪涓韫磋屽氨锛屽畠涓嶳NN鐨勮緝閲忔槸鏅烘収鐨勫瑰喅銆俁NN鍦ㄧ煭渚濊禆闂棰樹笂濡傞奔寰楁按锛屼絾LSTM鍑鍊熼棬鎺ф満鍒剁殑鍗撹秺澶勭悊鑳藉姏锛屽挨鍏跺湪澶勭悊闀垮簭鍒椾腑鐨勪俊鎭娴佸姩鏃讹紝灞曠幇鍑轰簡鏃犲彲姣旀嫙鐨勪紭鍔裤傚湪鏂囨湰鐢熸垚涓锛孡STM鍍忔槸涓浣嶈瘲浜猴紝鐢ㄥ叾鐙鐗圭殑缁撴瀯鍜岃板繂锛岀紪缁囧嚭涓棣栭栫編濡欑殑璇楃瘒銆傞夋嫨LSTM杩樻槸RNN锛屽氨濡傚悓鎸戦夐傚悎鐨勫伐鍏凤紝鍙栧喅浜庝换鍔$殑娣卞害鍜屽箍搴﹂渶姹傘
涓句釜瀹炰緥锛岃缁冧竴涓璇楁瓕鐢熸垚妯″瀷锛屾垜浠鐢≒ython鍜孠eras缂栫粐浠g爜鐨勬棆寰嬨傛暟鎹棰勫勭悊鏄搴忔洸锛屾ā鍨嬫瀯寤哄垯鏄涓绘棆寰嬶紝浠嶦mbedding鍒癓STM鍐嶅埌Dropout锛屾瘡涓鐜鑺傞兘鏄涓轰簡寮曞艰瘲姝岀殑鏃嬪緥銆傜敓鎴愭枃鏈鐨勮繃绋嬶紝灏卞儚鍒涗綔涓棣栬瘲锛屼粠鍒濆嬬殑绉嶅瓙寮濮嬶紝閫氳繃妯″瀷鐨勬櫤鎱э紝閫愯瘝鐢熼暱锛岀洿鑷冲畬鎴愪竴棣栧畬鏁寸殑璇楃瘒銆
LSTM鍦ㄨ闊宠瘑鍒涓鐨勫簲鐢ㄥ悓鏍蜂护浜虹灘鐩锛屽畠濡傚悓涓浣嶉瓟鏈甯堬紝閫氳繃淇″彿棰勫勭悊鍜岀壒寰佹彁鍙栵紝鎻愬崌璇闊宠川閲忓拰璇嗗埆鐨勫噯纭搴︺傚湪鏈哄櫒缈昏瘧鐨勯嗗煙锛孡STM濡傚悓缈昏瘧瀹讹紝鏋勫缓鐨勮瑷妯″瀷鍜岀炕璇戞ā鍨嬪崗鍚屽伐浣滐紝鍒涢犲嚭娴佺晠鐨勮法鏂囧寲浜ゆ祦銆
鏈鏉ワ紝LSTM鐨勮繘鍖栧苟鏈姝㈡ワ紝GRU鍜孴ransformer绛夋柊鐗堟湰鐨勫嚭鐜帮紝浠ュ強璁缁冩晥鐜囧拰鏁版嵁闇姹傜殑浼樺寲锛屽皢浣縇STM鐨勮秴鑳藉姏鏇村姞寮哄ぇ銆傚敖绠¤缁冭繃绋嬪彲鑳借楁椂锛屼絾閫氳繃鏁版嵁澧炲己鍜岄勮缁冪殑鎶宸э紝鎴戜滑渚濈劧鍙浠ラ┚椹杩欏己澶х殑宸ュ叿锛岃╁畠鍦ㄥ悇绉嶆寫鎴樹腑澶ф斁寮傚僵銆