色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

神經網絡實現MTL時需要考慮的問題

jmiy_worldofai ? 來源:xx ? 2019-02-19 14:14 ? 次閱讀

在過去的一年里,我和我的團隊一直致力于提高 Taboola Feed 的個性化用戶體驗。我們使用多任務學習(MTL)來預測同一組輸入特性上的多個關鍵性能指標(KPIs),并在 TensorFlow 中實現了一個深度學習(DL)模型。但是,在我們開始著手這項研究的時候,MTL 對我們來說比現在復雜得多,所以我想分享一些經驗教訓。

在本文中,我將分享一些在神經網絡(NN)中實現 MTL 時具體需要考慮哪些方面的問題,我還將對這些問題提出簡單的 TensorFlow 解決方案。

我們想從硬參數共享(hard parameter sharing)的基本方法開始。硬共享意味著我們有一個共享子網,這個子網是特定于任務的。

在 TensorFlow 中使用這種模型時,由于它看起來與其他 NN 體系結構沒有那么大的不同,您可能會覺得自己有哪里做錯了。

經驗 1-損失合并

我們在 MTL 模型中遇到的第一個挑戰是為多個任務定義單個損失函數。雖然單個任務有定義明確的損失函數,但多個任務會帶來多個損失。

我們最開始嘗試的做法是直接將所有的損失相加。不久我們就發現,當一個任務趨同于好的結果時,其他任務看起來相當糟糕。造成這個現象的原因很簡單,因為損失的規模是如此的不同,以至于一個任務主導了整個損失,而其余的任務沒有機會影響共享層的學習過程。

一個快速的解決辦法是用一個加權和替代損失的直接相加和,使所有的損失對共享層的影響大致相同。然而,這個解決方案涉及另一個超參數,可能需要每隔一段時間調整一次。

幸運的是,我們發現了一篇很棒的論文,論文建議使用不確定性來衡量 MTL 中的損失。具體方法是學習另一個噪聲參數,該參數集成在每個任務的損失函數中。這允許 MTL 中有多個任務,并使所有損失達到相同的規模。

通過這種方法,不僅可以得到比加權和更好的結果,而且不需要考慮附加的權重超參數。這篇論文的作者還提供了一個 keras 實現方法。

經驗 2-調整學習速率

學習速率是調節神經網絡最重要的超參數之一,這是一個常見的規律。所以我們嘗試了調優,發現了對不同任務來說最優的調試速率。選擇較高的學習率會導致其中一個任務的dying Relu,而使用較低的學習率會導致另一個任務的收斂緩慢。那我們該怎么辦?我們可以讓每個特定于任務的子網調整為單獨的學習速率,并將共享子網調整為另一個速率。

雖然這聽起來很復雜,但實際上相當簡單。通常,在 TensorFlow 中訓練神經網絡時,您可以使用如下方法:

optimizer = tf.train.AdamOptimizer(learning_rate).minimize(loss)

A

damOptimizer 定義了應該如何應用漸變,并最小化計算并應用它們。我們可以用自己的實現來代替最小化,該實現將對計算圖中的每個變量使用適當的學習速率:

all_variables = shared_vars + a_vars + b_varsall_gradients = tf.gradients(loss, all_variables)

shared_subnet_gradients = all_gradients[:len(shared_vars)]a_gradients = all_gradients[len(shared_vars):len(shared_vars + a_vars)]b_gradients = all_gradients[len(shared_vars + a_vars):]

shared_subnet_optimizer = tf.train.AdamOptimizer(shared_learning_rate)a_optimizer = tf.train.AdamOptimizer(a_learning_rate)b_optimizer = tf.train.AdamOptimizer(b_learning_rate)

train_shared_op = shared_subnet_optimizer.apply_gradients(zip(shared_subnet_gradients, shared_vars))train_a_op = a_optimizer.apply_gradients(zip(a_gradients, a_vars))train_b_op = b_optimizer.apply_gradients(zip(b_gradients, b_vars))

train_op = tf.group(train_shared_op, train_a_op, train_b_op)

另外,這個技巧實際上也可以應用于單任務網絡

經驗 3-使用評估作為特征

一旦我們通過了創建預測多個任務的 NN 的第一個階段,我們可能會將某個任務的評估作為另一個任務的結果。這個估計是張量,所以我們可以像連接其他層的輸出一樣連接它。但是在反向傳播中會發生什么呢?

假設任務 A 的估計值作為一個特性傳遞給任務 B。我們可能并不想將梯度從任務 B 傳回任務 A,因為我們已經給了任務 A 標簽

別擔心,TensorFlow 的 API 有tf.stop_gradient,它正是為了解決這個問題而存在的。當計算梯度時,它可以讓你傳遞一個張量列表,你想把它當作常數,這正是我們所需要的。

all_gradients = tf.gradients(loss, all_variables, stop_gradients=stop_tensors)

同樣地,這在 MTL 網絡中很有用,但它不僅僅在 MTL 網絡中有用。只要您想用 TensorFlow 計算一個值,并且需要假設該值是一個常量,就可以使用此技術。例如,當訓練生成對抗網絡(GANs)時,您不希望在生成對抗性網絡的過程中進行反向傳播。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 神經網絡
    +關注

    關注

    42

    文章

    4771

    瀏覽量

    100714

原文標題:多任務深度學習的三個經驗教訓

文章出處:【微信號:worldofai,微信公眾號:worldofai】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    神經網絡教程(李亞非)

      第1章 概述  1.1 人工神經網絡研究與發展  1.2 生物神經元  1.3 人工神經網絡的構成  第2章人工神經網絡基本模型  2.1 MP模型  2.2 感知器模型  2.3
    發表于 03-20 11:32

    神經網絡簡介

    神經網絡簡介
    發表于 08-05 21:01

    labview BP神經網絡實現

    請問:我在用labview做BP神經網絡實現故障診斷,在NI官網找到了機器學習工具包(MLT),但是里面沒有關于這部分VI的幫助文檔,對于”BP神經網絡分類“這個范例有很多不懂的地方,比如
    發表于 02-22 16:08

    神經網絡基本介紹

    神經網絡基本介紹
    發表于 01-04 13:41

    全連接神經網絡和卷積神經網絡有什么區別

    全連接神經網絡和卷積神經網絡的區別
    發表于 06-06 14:21

    卷積神經網絡如何使用

    卷積神經網絡(CNN)究竟是什么,鑒于神經網絡在工程上經歷了曲折的歷史,您為什么還會在意它呢? 對于這些非常中肯的問題,我們似乎可以給出相對簡明的答案。
    發表于 07-17 07:21

    【案例分享】ART神經網絡與SOM神經網絡

    今天學習了兩個神經網絡,分別是自適應諧振(ART)神經網絡與自組織映射(SOM)神經網絡。整體感覺不是很難,只不過一些最基礎的概念容易理解不清。首先ART神經網絡是競爭學習的一個代表,
    發表于 07-21 04:30

    人工神經網絡實現方法有哪些?

    人工神經網絡(Artificial Neural Network,ANN)是一種類似生物神經網絡的信息處理結構,它的提出是為了解決一些非線性,非平穩,復雜的實際問題。那有哪些辦法能實現人工神經
    發表于 08-01 08:06

    如何設計BP神經網絡圖像壓縮算法?

    (Digital Signal Processor)相比,現場可編程門陣列(Field Programma-ble Gate Array,FPGA)在神經網絡實現上更具優勢。DSP處理器在處理時采用指令順序執行
    發表于 08-08 06:11

    簡單神經網絡實現

    最簡單的神經網絡
    發表于 09-11 11:57

    如何構建神經網絡

    原文鏈接:http://tecdat.cn/?p=5725 神經網絡是一種基于現有數據創建預測的計算系統。如何構建神經網絡神經網絡包括:輸入層:根據現有數據獲取輸入的層隱藏層:使用反向傳播優化輸入變量權重的層,以提高模型的預測
    發表于 07-12 08:02

    matlab實現神經網絡 精選資料分享

    神經神經網絡,對于神經網絡實現是如何一直沒有具體實現一下:現看到一個簡單的神經網絡模型用于訓
    發表于 08-18 07:25

    基于BP神經網絡的PID控制

    最近在學習電機的智能控制,上周學習了基于單神經元的PID控制,這周研究基于BP神經網絡的PID控制。神經網絡具有任意非線性表達能力,可以通過對系統性能的學習來實現具有最佳組合的PID控
    發表于 09-07 07:43

    神經網絡移植到STM32的方法

    神經網絡移植到STM32最近在做的一個項目需要用到網絡進行擬合,并且將擬合得到的結果用作控制,就在想能不能直接在單片機上做神經網絡計算,這樣就可以實時計算,不依賴于上位機。所以要解決
    發表于 01-11 06:20

    rnn是遞歸神經網絡還是循環神經網絡

    : 循環神經網絡的基本概念 循環神經網絡是一種具有時間序列特性的神經網絡,它能夠處理序列數據,具有記憶功能。與傳統的前饋神經網絡不同,循環神經網絡
    的頭像 發表于 07-05 09:52 ?559次閱讀
    主站蜘蛛池模板: 免费精品国偷自产在线在线| 久久香蕉国产线看观看首页| 久久成人a毛片免费观看网站| 媚药调教被撑到合不拢h| 人人射人人爱| 艳妇臀荡乳欲伦岳TXT下载| jizz日本美女| 久爱精品亚洲电影午夜| 秋霞电影伦网理最新在线看片| 亚洲国产日韩欧美视频二区 | 我和黑帮老大第365天第2季在线| 亚洲性无码AV久久成人| np高h肉辣一女多男| 好看AV中文字幕在线观看| 欧美丰满少妇久久无码精品| 亚洲福利天堂网福利在线观看| 99久久免费看国产精品| 国产亚洲AV精品无码麻豆| 暖暖高清视频免费| 亚洲欧洲久久| 大迪克黑人异族| 榴莲推广APP网站入口官网| 无罩看奶禁18| CHINA篮球体育飞机2022网站| 精品国产乱码久久久久久免费| 日韩精品无码视频一区二区蜜桃| 在线视频 国产精品 中文字幕| 国产精品久久久久久久久免费下载 | 国产精品久久一区二区三区蜜桃| 免费看美女的网站| 亚洲免费综合色视频| 纯肉小黄文高H| 蜜芽一二三区| 伊伊人成亚洲综合人网| 国产精品人妻一区免费看8C0M| 欧美性猛交AAA片| 2020久久精品永久免费| 绞尽奶汁by菊花开| 小莹的性荡生活| 大学生高潮无套内谢视频| 男同志在线观看|