【機器學習】042_遷移學習

一、概述、定義

目的:

遷移學習的目的是將某個領域或任務上學習到的模式、知識應用到不同但相關的領域里,獲取更多數據,而不必投入許多時間人力來進行數據的標注。

舉例:

已經會下中國象棋,就可以類比著來學習國際象棋;已經會編寫Java程序,就可以類比著來學習C#;已經學會英語,就可以類比著來學習法語;已經學會了騎自行車,就可以類比學習騎摩托車等等。

定義:

Transfer Learning Definition:
Ability of a system to recognize and apply knowledge and skills learned in previous domains/tasks to novel domains/tasks.

通俗地講,遷移學習就是運用已有的知識、模型來學習新的知識,構建新模型。其核心是找到已有知識與新知識的相似性與關聯性。

重要概念:

域:某個時刻的某個特定領域——例如書本評論、電影評論;

任務:所要完成的任務與實現的功能——例如情感分析、實體識別;

給定源域?D_s?和學習任務?T_s、目標域?D_t?和學習任務?T_t,遷移學習的目的是獲取源域 D_s?和學習任務 T_s?中知識來幫助提升目標域?D_t?中預測函數?f_t(.)?的學習。其中?D_s\neq D_t?或者?T_s\neq T_t

二、遷移學習的分類

1.?基于實例的遷移

研究如何從源域中找出對目標領域訓練有作用的實例。

例:在對源域的有標記數據實例中進行有效的權重分配,讓源域的實例分布接近目標域的實例分布,從而在目標領域中建立一個分類精度較高并且可靠的學習模型。

遷移學習中,源域與目標域的數據分布不一致,故源域中并非所有有標記的數據實例都對目標域有作用。基于實例的遷移有現有的一些遷移算法,來對源域的有效數據遷移到目標域中。

TrAdaBoost算法就是典型基于實例的遷移。

TrAdaBoost算法的工作機制如下:

  1. 初始化:算法開始時,對源域和目標域數據的權重進行初始化。通常,目標域數據的初始權重會高于源域數據。

  2. 迭代更新:在每一輪中,算法使用當前的權重來訓練一個弱分類器。分類器首先在目標域上測試,然后在兩個域上進行誤差評估。

  3. 權重調整:算法根據分類器的表現來調整數據點的權重。對于源域數據,分類正確的數據點權重會增加(使得算法在后續迭代中更少地關注這些點),而分類錯誤的數據點權重會減少。這與傳統的AdaBoost相反,其核心思想是減少源域中對目標域幫助不大或有害的數據點的權重。對于目標域數據,權重更新與傳統AdaBoost相同,即增加被錯誤分類數據點的權重。

  4. 終止條件:算法會在達到預定的迭代次數后停止,或者當目標域上的誤差不再顯著減少時停止。

  5. 組合弱分類器:最后,算法結合所有的弱分類器,形成一個強分類器。每個弱分類器根據其在目標域上的性能加權,性能越好的分類器影響越大。

通過這種方式,能夠有效利用源域數據來幫助構建在目標域上表現良好的分類器,即便源域和目標域的數據分布有所不同。

2.?基于特征的遷移

①特征選擇

找出源域和目標域之間共同的特征表示,找出特征之間對應的不同相關性,利用這些特征進行知識遷移。

②特征映射

將源域和目標域的數據從原始特征空間映射到新的特征空間之中。

源域的特征值經過一系列變換,對應到目標域的特征值,經過一一映射,使得源域數據與目標域的數據分布相同,從而在新的空間中,更好地利用源域已有的標記數據樣本進行分類訓練。最終對目標域的數據進行分類測試。

3.?基于共享參數的遷移

找到源域與目標域空間模型之間的共同參數或先驗分布。

前提:學習任務的每個相關模型都會共享一些相同的參數或者先驗分布。

三、遷移學習使用場景

1. 有大量數據樣本,但大部分樣本無標注

要想繼續增加更多數據標注,需要付出很多成本。利用遷移學習思想,可以尋找一些和目標數據相似而且已經有標注的數據,利用數據之間的相似性對知識進行遷移,提高對目標數據的預測效果或者標注精度。

2. 幫助解決算法的冷啟動問題

在跨域推薦系統將用戶偏好模型從現有域(如圖書推薦領域)遷移到一個新域(如電影推薦領域)中。

3. 想要獲取具有更強泛化能力,但是數據樣本較少. 許多應用場景數據量小

高質量有標簽數據總是供不應求。傳統的機器學習算法常常因為數據量小而產生過擬合問題,因而無法很好地泛化到新的場景中。

4. 數據來自不同的分布時

數據分布不僅會隨著時間和空間而變化,也會隨著不同的情況而變化,我們可能無法使用相同的數據分布來對待新的訓練數據。已經訓練完成的模型需要在使用前進行調整,在不同于訓練數據的新場景下。

四、遷移學習的示例

例:假設現在要構建一個對手寫數字進行識別的模型,但目前已有的已標注數據較少,如何不花費大量時間精力標注數據也能獲得一個效果較好的模型?

方法:借助遷移學習,利用其它模型來輔助實現該任務。

假設有一個已經訓練好的可以識別貓、狗、汽車和人的圖像識別模型。復制此神經網絡,在其中插入新的參數,那么對于最后的輸出層,可以消除輸出層并用一個更小的輸出層(10個)替換它。

可以做的是使用前幾層隱藏層的參數(實際上是除輸出層之外所有隱藏層),然后采用兩種方法訓練新的網絡:

①將五個新的輸出層參數作為頂部的值,固定它們然后使用隨機梯度下降或Adam算法更新參數,來降低識別數字0到9的成本函數。

②更新并訓練網絡中的所有參數,但前幾層參數可以借助之前的神經網絡。

首先在大數據集上進行訓練,然后再在較小的數據集上進一步調整參數,這就是監督預訓練。

然后進行微調,在其中獲取已初始化或從監督預訓練中獲得的參數,進一步運行梯度下降微調權重以適應對應新的學習任務的特定應用參數。

原理:如果同樣是圖像識別的神經網絡,那么在前幾層——檢測圖像邊緣、檢測角點、檢測通用形狀、基本曲線等等都是相同的步驟,因而可以通用進行。

故而,可以下載、借助他人預訓練的神經網絡來根據自己的數據進一步訓練、微調神經網絡以達成相應目的。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/212677.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/212677.shtml
英文地址,請注明出處:http://en.pswp.cn/news/212677.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java單元測試:JUnit和Mockito的使用指南

引言: 在軟件開發過程中,單元測試是一項非常重要的工作。通過單元測試,我們可以驗證代碼的正確性、穩定性和可維護性,幫助我們提高代碼質量和開發效率。本文將介紹Java中兩個常用的單元測試框架:JUnit和Mockito&#x…

Navicat連接Oracle數據庫

Navicat連接Oracle數據庫 打開服務里面找到Oracle服務 OracleServerXE或者OracleServerTTL 創建數據庫連接 連接名默認自己起 主機選擇本地 端口默認 服務名在服務中可以找到輸入后綴 用戶名默認都是system 密碼是創建oracle時候填寫的口令 點擊測試連接即可

Spring Boot中的事務是如何實現的?懂嗎?

SpringBoot中的事務管理,用得好,能確保數據的一致性和完整性;用得不好,可能會給性能帶來不小的影響哦。 基本使用 在SpringBoot中,事務的使用非常簡潔。首先,得感謝Spring框架提供的Transactional注解&am…

【金融數據分析】計算滬深300指數行業權重分布并用餅圖展示

前言 前面的文章我們已經介紹了如何獲取滬深300成分股所述行業以及權重的數據,想要了解這部分內容的小伙伴可以閱讀上一篇文章 springbootjdbcTemplatesqlite編程示例——以滬深300成分股數據處理為例-CSDN博客 那么有了上文獲取的數據,我們實際上可以…

【rabbitMQ】rabbitMQ控制臺模擬收發消息

目錄 1.新建隊列 2.交換機綁定隊列 3.查看消息是否到達隊列 總結: 1.新建隊列 2.交換機綁定隊列 點擊amq.fonout 3.查看消息是否到達隊列 總結: 生產者(publisher)發送消息,先到達交換機,再到隊列&…

微信小程序uni-app:常用Form表單組件使用示例

目錄 input 輸入框picker 選擇器 input 輸入框 https://developers.weixin.qq.com/miniprogram/dev/component/input.htmlhttps://uniapp.dcloud.net.cn/component/input.html <inputclass"input-class"type"text"v-model"value"placeholde…

Linux下文本三劍客:grep、awk、sed之對比

一、grep 主要用于搜索某些字符串&#xff1b;sed、awk 用于處理文本&#xff1a; grep基本是以行為單位處理文本的&#xff1b; 而awk可以做更細分的處理&#xff0c;通過指定分隔符將一行&#xff08;一條記錄&#xff09;劃分為多個字段&#xff0c;以字段為單位處理文本。…

python輸出菱形字符圖案 附實戰代碼

下面是一個Python程序&#xff0c;可以用來輸出菱形字符圖案。這個程序使用了兩個嵌套的for循環&#xff0c;以及字符串連接操作。 # 獲取用戶輸入 n int(input("請輸入菱形的邊長&#xff1a;"))# 生成上半部分菱形 for i in range(1, n 1, 2):print(" &quo…

SDK,但未在應用內的隱私政策/在AppGallery Connect上提交的隱私政策內容中進行明示,不符合華為應用市場審核標準。

&#xff08;暫時用不到的也建議收藏一下&#xff0c;因為文章持續更新中&#xff09; 最新更改時間&#xff1a;20023-12-10 第三方SDK合集列表 為了確保用戶個人信息的安全&#xff0c;我們對使用到的第三方提供的軟件開發包&#xff08;SDK&#xff09;進行了嚴格的安全檢…

期末速成數據庫極簡版【存儲過程】(5)

目錄 【7】系統存儲過程 【8】用戶存儲過程——帶輸出參數的存儲過程 創建存儲過程 存儲過程調用 【9】用戶存儲過程——不帶輸出參數的存儲過程 【7】系統存儲過程 系統存儲我們就不做過程講解用戶存儲過程會考察一道大題&#xff0c;所以我們把重點放在用戶存儲過程。…

vscode 編寫爬蟲爬取王者榮耀壁紙

網上關于爬蟲大部分教程和編輯器用的都不是vscode &#xff0c;此教程用到了vscode、Python、bs4、requests。 vscode配置Python安裝環境可以看看這個大佬的教程 03-vscode安裝和配置_嗶哩嗶哩_bilibili vscode配置爬蟲環境可以參考這個大佬的教程【用Vscode實現簡單的python…

U4_1 語法分析之自頂向下分析

文章目錄 一、定義1、任務2、對比3、方法4、自頂向下面臨問題 二、自頂向下分析1、概念2、特點3、二義性問題4、左遞歸問題1&#xff09;概念2&#xff09;消除3&#xff09;間接左遞歸 5、回溯問題1&#xff09;概念2&#xff09;消除3&#xff09;解決方法 6、總結 三、遞歸子…

Java 線程池中 submit() 和 execute() 方法有什么區別?

Java 線程池中 submit() 和 execute() 方法有什么區別&#xff1f; 在 Java 中&#xff0c;ExecutorService 接口是用于管理和執行線程的框架&#xff0c;它定義了兩個用于提交任務的方法&#xff1a;submit() 和 execute()。這兩種方法有一些區別&#xff1a; 返回值&#xf…

【Proteus仿真】【51單片機】光照強度檢測系統

文章目錄 一、功能簡介二、軟件設計三、實驗現象聯系作者 一、功能簡介 本項目使用Proteus8仿真51單片機控制器&#xff0c;使共陰數碼管&#xff0c;PCF8591 ADC模塊、光敏傳感器等。 主要功能&#xff1a; 系統運行后&#xff0c;數碼管顯示光傳感器采集光照強度值&#xff…

Gitzip插件【Github免翻下載】

今天給大家推薦一個github下載的插件&#xff0c;平常大家下載應該無外乎就是以下兩種&#xff1a; Download zip利用git clone 但是這兩種各有各的弊端&#xff0c;前者一般需要科學上網才可以&#xff0c;后者下載不穩定經常中途斷掉。 今天給推薦一個款瀏覽器插件-Gitzip.大…

基于SSM的java衣服商城

基于SSM的java衣服商城 一、系統介紹二、功能展示四、其他系統實現五、獲取源碼 一、系統介紹 項目類型&#xff1a;Java EE項目 項目名稱&#xff1a;基于SSM的美衣商城 項目架構&#xff1a;B/S架構 開發語言&#xff1a;Java語言 前端技術&#xff1a;Layui等 后端技術…

Flask和Vue框架實現WebSocket消息通信

1 安裝環境 1.1 安裝Flask環境 主要的安裝包 Flask、Flask-SocketIO&#xff0c;注意Python版本要求3.6 # Flask-SocketIO參考地址 https://flask-socketio.readthedocs.io/en/latest/ https://github.com/miguelgrinberg/flask-socketio更新基礎環境 # 更新pip python -m …

Unity發布WebGL測試界面處理方式參考

如果使用Unity發布WebGL經常會和網頁進行交互&#xff0c;為了能夠做到界面統一&#xff0c;往往所有UI都是在頁面上開發的&#xff0c;Unity本身不做任何UI或者只做三維UI&#xff0c;但是在開發過程中&#xff0c;為了測試接口&#xff0c;難免要在Unity中做一些UI來方便測試…

以太坊虛擬機EVM介紹,智能合約詳解

以太坊為例&#xff1a;什么是智能合約&#xff1f;智能合約怎么部署、調用、執行&#xff1f;智能合約的原理&#xff1f;智能合約存在哪兒&#xff1f;如何區分調用的是智能合約&#xff1f;世界狀態數據庫、EVM、智能合約它們之間的關系&#xff1f; 什么是智能合約 指的是…

【Hive】啟動beeline連接hive報錯解決

1、解決報錯2、在datagrip上連接hive 1、解決報錯 剛開始一直報錯&#xff1a;啟動不起來 hive-site.xml需要配置hiveserver2相關的 在hive-site.xml文件中添加如下配置信息 <!-- 指定hiveserver2連接的host --> <property><name>hive.server2.thrift.bin…