0
本文作者: 楊鯉萍 | 2019-07-29 18:14 |
雷鋒網(wǎng) AI 科技評(píng)論按:在過(guò)去的幾十年中,智能會(huì)話系統(tǒng)已經(jīng)發(fā)生了顯著的變化,從關(guān)鍵字識(shí)別交互式語(yǔ)音應(yīng)答(IVR)系統(tǒng)到跨平臺(tái)智能個(gè)人助理,都在慢慢成為日常生活中不可或缺的一部分。在這樣的背景環(huán)境下,我們需要一個(gè)直觀、靈活和全面的研發(fā)平臺(tái),用來(lái)幫助我們進(jìn)行新算法評(píng)估、快速原型創(chuàng)建以及可靠地部署會(huì)話 AI 智能體。
因此,Uber AI 發(fā)布了名為「柏拉圖研究會(huì)話系統(tǒng)」(Plato Research Dialogue System)的開(kāi)源人工智能平臺(tái),來(lái)解決這個(gè)問(wèn)題。雷鋒網(wǎng) AI 科技評(píng)論將其文章整理編譯如下。
Plato 是一個(gè)用于構(gòu)建、訓(xùn)練和部署會(huì)話 AI 智能體的平臺(tái)。它能夠使我們?cè)跁?huì)話 AI 中進(jìn)行最先進(jìn)的研究,快速創(chuàng)建原型和演示系統(tǒng),以及更便捷的采集會(huì)話數(shù)據(jù)。而且該系統(tǒng)有「簡(jiǎn)潔」和「易于理解」的特點(diǎn),并與現(xiàn)有的深度學(xué)習(xí)和與現(xiàn)有深度學(xué)習(xí)框架和貝葉斯優(yōu)化框架(用于模型調(diào)優(yōu))集成,可減少編寫(xiě)代碼的需要。因此不論是經(jīng)驗(yàn)豐富的研究人員還是會(huì)話 AI 背景有限的興趣愛(ài)好者,都能夠輕松掌握其使用方法。
同時(shí),我們也在平臺(tái)拓展性方面做出了許多努力,如一般研究或特定用例所用工具,包括 Olympus,PyDial,ParlAI,Virtual Human Toolkit,Rasa,DeepPavlov,ConvLab 等。在評(píng)估是否利用這些工具時(shí),我們發(fā)現(xiàn)許多用戶需要熟悉特定于平臺(tái)的源代碼,關(guān)注特定的用例。這既不靈活也無(wú)法可靠地支持其他用戶使用,并且有時(shí)還需要使用許可證。
Plato 則能夠解決這些問(wèn)題,并旨在構(gòu)建、訓(xùn)練和部署會(huì)話 AI 智能體。它支持通過(guò)語(yǔ)音、文本或結(jié)構(gòu)化信息(會(huì)話行為)進(jìn)行交互,并且每個(gè)會(huì)話智能體可以與人類用戶、其他會(huì)話智能體(在多智能體設(shè)置中)或數(shù)據(jù)進(jìn)行交互。最重要的是,Plato 可以為每個(gè)會(huì)話智能體組件合并現(xiàn)有的預(yù)訓(xùn)練模型,并且每個(gè)組件都可以在線(在交互期間)或離線(從數(shù)據(jù))進(jìn)行訓(xùn)練。
從概念上講,會(huì)話智能體需要經(jīng)過(guò)各種步驟才能處理它接收的輸入信息(例如,「今天天氣如何?」)并產(chǎn)生恰當(dāng)?shù)妮敵觯ā赣酗L(fēng)但不太冷」)。主要步驟對(duì)應(yīng)于標(biāo)準(zhǔn)體系結(jié)構(gòu)的主要組件(見(jiàn)圖 1):
語(yǔ)音識(shí)別(將語(yǔ)音轉(zhuǎn)錄為文本)
語(yǔ)言理解(從該文本中提取意義)
狀態(tài)跟蹤(迄今為止所說(shuō)和所做工作的匯總信息)
API 調(diào)用(搜索數(shù)據(jù)庫(kù),查詢 API 等)
會(huì)話策略(生成智能體響應(yīng)的抽象含義)
語(yǔ)言生成(將抽象意義轉(zhuǎn)換為文本)
語(yǔ)音合成(將文本轉(zhuǎn)換為語(yǔ)音)
我們使 Plato 的設(shè)計(jì)盡可能模塊化且具有靈活性,它支持傳統(tǒng)的和自定義的會(huì)話 AI 架構(gòu)。更重要的是,它支持多方交互,其中的多個(gè)智能體可能具有不同的角色,可以相互交互,同時(shí)進(jìn)行訓(xùn)練,并解決分布式問(wèn)題。
下面的圖 1 和圖 2 描繪了與人類用戶和模擬用戶交互時(shí) Plato 會(huì)話智能體架構(gòu)的示例。與模擬用戶交互是研究社區(qū)中用于快速開(kāi)始學(xué)習(xí)的常見(jiàn)做法(即在與人類交互之前學(xué)習(xí)一些基本行為)。每個(gè)單獨(dú)的組件都可以用任意機(jī)器學(xué)習(xí)庫(kù)(例如,Ludwig,TensorFlow 或 PyTorch)進(jìn)行在線或離線的訓(xùn)練。因?yàn)?Plato 是一個(gè)通用框架,Uber 的開(kāi)源深度學(xué)習(xí)工具箱 Ludwig 是一個(gè)很好的選擇,因?yàn)?Ludwig 不需要編寫(xiě)代碼并且與 Plato 完全兼容。
圖 1:Plato 的模塊化架構(gòu)有助于組件的在線或離線訓(xùn)練,可以通過(guò)自定義或預(yù)先訓(xùn)練的模型進(jìn)行替換。(圖中的灰色組件不是核心柏拉圖組件)
圖 2:使用模擬用戶而不是人類用戶,如圖 1 所示,我們可以預(yù)先訓(xùn)練柏拉圖各組件的統(tǒng)計(jì)模型。然后,這些可以用于創(chuàng)建原型會(huì)話智能體,該智能體可以與人類用戶交互以收集更多自然數(shù)據(jù),這些數(shù)據(jù)隨后可用于訓(xùn)練更好的統(tǒng)計(jì)模型。(圖中的灰色組件不是柏拉圖核心組件)
除了單智能體交互之外,Plato 還支持多智能體會(huì)話,其中多個(gè)柏拉圖智能體可以相互交互并相互學(xué)習(xí)。具體來(lái)說(shuō),柏拉圖將產(chǎn)生會(huì)話智能體,確保輸入和輸出(每個(gè)智能體聽(tīng)到和說(shuō)出的內(nèi)容)被恰當(dāng)?shù)貍鬟f給每個(gè)智能體,并跟蹤會(huì)話。
這種設(shè)置可以促進(jìn)多智能體學(xué)習(xí)的研究,其中智能體需要學(xué)習(xí)如何生成語(yǔ)言以執(zhí)行任務(wù),以及在多方交互的子領(lǐng)域中進(jìn)行研究(會(huì)話狀態(tài)跟蹤、會(huì)話輪控制等等)。會(huì)話原則定義了每個(gè)智能體可以理解的內(nèi)容(實(shí)體或含義的本體,例如:價(jià)格、位置、偏好、烹飪類型等)以及它可以做什么(詢問(wèn)更多信息、提供一些信息、調(diào)用 API 等)。智能體可以通過(guò)語(yǔ)音、文本或結(jié)構(gòu)化信息(會(huì)話行為)進(jìn)行通信,并且每個(gè)智能體都有自己的配置。下面的圖 3 描述了這種架構(gòu),概述了兩個(gè)智能體和各種組件之間的通信:
圖 3:Plato 的架構(gòu)允許對(duì)多個(gè)智能體進(jìn)行并行訓(xùn)練,每個(gè)智能體可能具有不同的角色和目標(biāo),并且可以促進(jìn)多方交互和多智能體學(xué)習(xí)等領(lǐng)域的研究。(圖中的灰色組件不是核心柏拉圖組件)
最后,Plato 通過(guò)圖中所示的通用智能體體系結(jié)構(gòu)支持自定義體系結(jié)構(gòu)(例如:將 NLU 拆分為多個(gè)獨(dú)立組件)和聯(lián)合訓(xùn)練的組件(例如:文本到會(huì)話狀態(tài)、文本到文本或任何其他組合)。如圖 4 所示:
圖 4:Plato 的通用智能體體系結(jié)構(gòu)支持廣泛的自定義,包括聯(lián)合組件、語(yǔ)音到語(yǔ)音組件和文本到文本組件,所有這些組件都可以串行或并行執(zhí)行。
此模式脫離了標(biāo)準(zhǔn)會(huì)話智能體體系結(jié)構(gòu),支持任何類型的體系結(jié)構(gòu)(例如:使用聯(lián)合組件、文本到文本或語(yǔ)音到語(yǔ)音組件或任何其他設(shè)置),并允許將現(xiàn)有或預(yù)先訓(xùn)練有素的模型加載進(jìn) Plato 中。
用戶只需為模塊提供 Python 類名和包路徑,以及模型的初始化參數(shù),或?qū)⒆约旱慕M件載入 Plato 中,就可以自行定義這個(gè)體系結(jié)構(gòu)。用戶簡(jiǎn)單的按照應(yīng)該執(zhí)行的順序?qū)⒛K列出之后,Plato 就可以負(fù)責(zé)其余部分了,包括:包裝輸入/輸出、鏈接模塊和處理會(huì)話。Plato 支持模塊的串行和并行執(zhí)行。
Plato 還通過(guò)組合結(jié)構(gòu)的貝葉斯優(yōu)化(BOCS)為會(huì)話 AI 架構(gòu)或單個(gè)模塊參數(shù)的貝葉斯優(yōu)化提供支持。
版本 Plato(v.1.1)不需要實(shí)際安裝,因?yàn)樗试S用戶修改部分代碼或擴(kuò)展現(xiàn)有用例以獲得更大的靈活性。但是,Plato 確實(shí)依賴于某些外部庫(kù),需要安裝這些庫(kù)??梢园凑找韵聝蓚€(gè)步驟完成此過(guò)程:
注意:Plato 是用 Python 3 開(kāi)發(fā)的。
1. 克隆存儲(chǔ)庫(kù):
git clone
git@github.com:uber-research/plato-research-dialogue-system.git
2. 安裝要求:
MacOS:
brew install portaudio
pip install -r requirements.txt
Ubuntu / Debian:
sudo apt-get install python3-pyaudio
pip install -r requirements.tx
Windows:
pip install -r requirements.txt
為了支持語(yǔ)音,則必須安裝 PyAudio,它具有開(kāi)發(fā)人員機(jī)器上可能不存在的許多依賴項(xiàng)。如果上述步驟不成功,PyAudio 安裝錯(cuò)誤這篇文章(https://stackoverflow.com/questions/5921947/pyaudio-installation-error-command-gcc-failed-with-exit-status-1)包含了有關(guān)如何獲取這些依賴項(xiàng)并安裝 PyAudio 的說(shuō)明。
其他常見(jiàn)安裝問(wèn)題的解決方案可在 Commonsues.md.
3. 運(yùn)行:
有關(guān)配置文件以及如何運(yùn)行 Plato 的快速介紹,請(qǐng)參見(jiàn)下文。
運(yùn)行 Plato 會(huì)話智能體
要運(yùn)行 Plato 會(huì)話智能體,用戶必須使用相應(yīng)的配置文件運(yùn)行以下命令(請(qǐng)參閱示例/ simulate_agenda.yaml 以獲取示例配置文件,其中包含有關(guān)環(huán)境和要?jiǎng)?chuàng)建的智能體的許多設(shè)置以及他們的組件):
python runPlatoRDS.py -config <PATH TO yaml CONFIG FILE>
下面列出了一些示例模式和配置:
1)運(yùn)行單個(gè)會(huì)話智能體
使用 Cambridge Restaurants 域中基于議程的用戶模擬器運(yùn)行模擬:
python runPlatoRDS.py -config examples / config / simulate_agenda.yaml
使用 Cambridge Restaurants 域中基于議程的模擬器運(yùn)行基于文本的交互:
python runPlatoRDS.py -config examples / config / simulate_text.yaml
使用 Cambridge Restaurants 域中基于議程的模擬器運(yùn)行基于語(yǔ)音的交互:
python runPlatoRDS.py -config examples / config / simulate_speech.yaml
2)運(yùn)行多個(gè)會(huì)話智能體
柏拉圖的主要功能之一是允許兩個(gè)智能體互相交互。每個(gè)智能體可以具有不同的角色(例如,系統(tǒng)和用戶)、不同的目標(biāo),并接收不同的獎(jiǎng)勵(lì)信號(hào)。例如,要在基準(zhǔn)劍橋餐廳域上運(yùn)行多個(gè) Plato 智能體,我們運(yùn)行以下命令來(lái)訓(xùn)練智能體的會(huì)話策略并對(duì)其進(jìn)行測(cè)試:
訓(xùn)練階段
python runPlatoRDS.py -config 示例/ config / CamRest_MA_train.yaml
測(cè)試階段
python runPlatoRDS.py -config 示例/ config / CamRest_MA_test.yaml
3)運(yùn)行通用 Plato 會(huì)話智能體
本文中的大多數(shù)討論和示例都圍繞傳統(tǒng)的會(huì)話智能體體系結(jié)構(gòu)展開(kāi)。然而,Plato 不需要堅(jiān)守這條規(guī)則,它的通用智能體支持任何范圍的自定義模塊,包括:將自然語(yǔ)言理解分解成許多組件、將多個(gè)組件并行運(yùn)行以及只有一個(gè)文本到文本模型等等。
通用智能體允許用戶將其自定義模塊作為 Python 類對(duì)象加載。對(duì)于配置文件中列出的每個(gè)模塊,Plato 將使用給定的路徑和參數(shù)實(shí)例化該類模型。然后在每次會(huì)話期間,通用智能體將按順序調(diào)用每個(gè)模塊(按照其配置文件中提供的順序),并將當(dāng)前模塊的輸出傳遞給列表中的下一個(gè)模塊,最后通用智能體將返回最后一個(gè)模塊的輸出。
以下是在通用模塊模式下運(yùn)行單個(gè) Plato 智能體或多個(gè) Plato 智能體的兩個(gè)示例。
單一通用智能體,用于實(shí)現(xiàn)自定義體系結(jié)構(gòu)或使用現(xiàn)有的預(yù)先訓(xùn)練的統(tǒng)計(jì)模型:
python runPlatoRDS.py -config 示例/ config / simulate_agenda_generic.yaml
多個(gè)通用智能體,與上述相同,但適用于多個(gè)智能體(假設(shè)該智能體已使用 Examples / config / CamRest_MA_train.yaml 訓(xùn)練過(guò)會(huì)話策略):
python runPlatoRDS.py -config examples / config / MultiAgent_test_generic.yaml
數(shù)據(jù)訓(xùn)練
Plato 支持使用任何深度學(xué)習(xí)框架在線(在交互期間)或離線(從數(shù)據(jù))方式訓(xùn)練智能體的內(nèi)部組件。實(shí)際上,只要符合 Plato 接口輸入/輸出的類型,任何模型都可以加載到 Plato 中。例如:目標(biāo)模型是自定義 NLU,它只需要具有 Plato 的 NLU 抽象類,實(shí)現(xiàn)必要的功能,并將數(shù)據(jù)打包/解壓到自定義模型中即可。
Plato 內(nèi)部經(jīng)驗(yàn)數(shù)據(jù)追蹤
為了便于在線學(xué)習(xí)、調(diào)試和評(píng)估,Plato 在一個(gè)稱為會(huì)話情節(jié)記錄器的結(jié)構(gòu)中跟蹤其內(nèi)部經(jīng)驗(yàn)數(shù)據(jù),包含有關(guān)先前的會(huì)話狀態(tài)、采取的行動(dòng)、當(dāng)前會(huì)話狀態(tài)、收到的話語(yǔ)信息和產(chǎn)生的話語(yǔ)信息、收到的獎(jiǎng)勵(lì)以及一些其他結(jié)構(gòu),如:一個(gè)可用于跟蹤上述類別無(wú)法收集的任何其他內(nèi)容的自定義字段。
在會(huì)話結(jié)束或按照指定時(shí)間間隔結(jié)束時(shí),每個(gè)會(huì)話智能體將調(diào)用其內(nèi)部組件的 train()函數(shù),將會(huì)話經(jīng)驗(yàn)數(shù)據(jù)作為訓(xùn)練數(shù)據(jù)傳遞;然后每個(gè)組件都會(huì)選擇訓(xùn)練所需的信息部分。
要使用在 Plato 中實(shí)現(xiàn)的學(xué)習(xí)算法,任何外部數(shù)據(jù)(如 DSTC2 數(shù)據(jù))都需要被解析為 Plato 類型的經(jīng)驗(yàn)數(shù)據(jù),以便這些外部數(shù)據(jù)可以由訓(xùn)練中相應(yīng)的組件進(jìn)行加載和使用?;蛘哂脩艨梢越馕鰯?shù)據(jù),并在 Plato 之外訓(xùn)練他們的模型;然后在需要將這些數(shù)據(jù)用于 Plato 智能體時(shí)簡(jiǎn)單地加載訓(xùn)練模型。
在線/離線訓(xùn)練
在線訓(xùn)練的過(guò)程就跟用戶希望將所訓(xùn)練每個(gè)組件配置中的「Train」標(biāo)志轉(zhuǎn)換為「True」一樣簡(jiǎn)單。而以數(shù)據(jù)進(jìn)行訓(xùn)練的離線訓(xùn)練中,用戶只需加載他們從數(shù)據(jù)集中解析的經(jīng)驗(yàn)數(shù)據(jù)。我們將使用 DSTC2 數(shù)據(jù)集作為 Plato 離線訓(xùn)練的一個(gè)例子,該數(shù)據(jù)集可以從「第二會(huì)話狀態(tài)跟蹤挑戰(zhàn)網(wǎng)站」(http://camdial.org/~mh521/dstc/downloads/dstc2_traindev.tar.gz)中獲得。
該 runDSTC2DataParser.py 腳本將解析 DSTC2 數(shù)據(jù),并將其保存為 Plato 的經(jīng)驗(yàn)數(shù)據(jù)。然后,它將加載該經(jīng)驗(yàn)數(shù)據(jù)并訓(xùn)練受監(jiān)督的策略:
python runDSTC2DataParser.py -data_path
<PATH_TO_DSTC2_DATA> / dstc2_traindev / data /
可以使用以下配置文件測(cè)試經(jīng)過(guò)訓(xùn)練的策略:
python runPlatoRDS.py -config
Examples/ config / simulate_agenda_supervised.yaml
注意:用戶可以將經(jīng)驗(yàn)數(shù)據(jù)從過(guò)去的交互或從數(shù)據(jù)加載到 Plato,然后通過(guò)強(qiáng)化學(xué)習(xí)或其他學(xué)習(xí)方法繼續(xù)訓(xùn)練他們的模型。
Ludwig 是一個(gè)由 Uber 發(fā)布的開(kāi)源深度學(xué)習(xí)框架,它允許用戶在不編寫(xiě)任何代碼的情況下訓(xùn)練模型。用戶只需將其數(shù)據(jù)解析為 CSV 文件,創(chuàng)建 Ludwig 配置文件,然后在終端中簡(jiǎn)單執(zhí)行運(yùn)行命令即可。用 YAML 編寫(xiě)的 Ludwig 配置文件描述了神經(jīng)網(wǎng)絡(luò)的架構(gòu),其中包含在 CSV 文件中使用到的功能以及其他參數(shù)。
在上一節(jié)中,runDSTC2DataParser.py 腳本實(shí)際上生成了一些 CSV 文件,可用于訓(xùn)練自然語(yǔ)言理解和生成,可在以下位置找到:Data/data。作為一個(gè)例子,我們將看到如何訓(xùn)練系統(tǒng)端自然語(yǔ)言生成器。為此,用戶需要編寫(xiě) yaml 配置文件,類似于下面所示。
Input_features:
name:nlg_input
type:sequence
encoder:rnn
cell_type:lstm
Output_features:
name:nlg_output
type:sequence
decoder:generator
cell_type:lstm
training:
epochs:20
learning_rate:0.001
dropout:0.2
并訓(xùn)練他們的模型:
ludwig experiment –model_definition_file
Examples/config/ludwig_nlg_train.yaml –data_csv
Data/data/DSTC2_NLG_sys.csv –output_directory Models/CamRestNLG/Sys/
接下來(lái)是在 Plato 中加載模型。用戶應(yīng)該轉(zhuǎn)到 simulate_agenda_nlg.yaml 配置文件,并在必要時(shí)更新 Ludwig 模型的路徑:
...
NLG:
nlg:CamRest
model_path:<PATH_TO_YOUR_LUDWIG_MODEL>/model
...
并測(cè)試該模型的工作原理:
python runPlatoRDS.py -config
Examples / config / simulate_agenda_nlg.yaml
請(qǐng)記住,Ludwig 每次調(diào)用時(shí)都會(huì)創(chuàng)建一個(gè)新的 experiment_run_i 目錄,因此用戶需要確保 Plato 配置文件中的模型路徑是最新的。
Ludwig 還提供了一種在線訓(xùn)練模型的方法,因此在實(shí)踐中,用戶只需要編寫(xiě)非常少的代碼來(lái)構(gòu)建、訓(xùn)練和評(píng)估 Plato 中新的深度學(xué)習(xí)組件。
為了給面向任務(wù)的應(yīng)用程序(如插槽填充)構(gòu)建會(huì)話智能體,用戶需要一個(gè)項(xiàng)目數(shù)據(jù)庫(kù)和一個(gè)描述其域的本體。Plato 提供了一個(gè)腳本來(lái)自動(dòng)執(zhí)行此過(guò)程。
例如,假設(shè)用戶想要為在線花店構(gòu)建會(huì)話智能體,在 CSV 文件中包含以下項(xiàng)目:
物品 ID,類型,顏色,價(jià)格,場(chǎng)合
1,玫瑰,紅色,1,任何
2,玫瑰,白色,2,周年紀(jì)念
3,玫瑰,黃色,2,慶祝
4,莉莉,白色,5,任何
5,蘭花,粉紅色,30,任何
6,大麗花,藍(lán)色,15,任何
用戶只需調(diào)用 createSQLiteDB.py 即可自動(dòng)生成 DB SQL 文件和 JSON 本體文件。用戶可以在配置文件中指定信息、請(qǐng)求和系統(tǒng)可請(qǐng)求的插槽,如下所示:
-
GENERAL:
csv_file_name:Data / data / flowershop.csv
db_table_name:
estore db_file_path:Ontology / Ontologies / flowershop.db
ontology_file_path:Ontology / Ontologies / flowershop.json
ONTOLOGY(本體):
informable_slots:[類型,價(jià)格,場(chǎng)合]
requestable_slots:[價(jià)格,顏色]
system_requestable_slots:[價(jià)格,場(chǎng)合]
注意:ONTOLOGY 部分是可選的。如果 ONTOLOGY 未被提供,腳本將假定所有插槽都是信息性的、可請(qǐng)求的和系統(tǒng)可請(qǐng)求的。
并運(yùn)行腳本:
python createSQLiteDB.py -config
Examples / config / create_flowershop_DB.yaml
A flowershop-rules.json 和 a flowershop-dbase.db 可以在 Domain/Domains 中找到。我們現(xiàn)在可以簡(jiǎn)單地使用虛擬組件運(yùn)行 Plato 并與簡(jiǎn)單智能體進(jìn)行交互作為完整性檢查:
python runPlatoRDS.py -config
Examples / config / flowershop_text.yaml
根據(jù)其功能,我們有兩種方法可以創(chuàng)建新模塊。如果模塊采用了執(zhí)行 NLU 或會(huì)話策略的新方法實(shí)現(xiàn),那么用戶應(yīng)該編寫(xiě)一個(gè)自相應(yīng)抽象類的類。
但是,如果一個(gè)模塊不適合單個(gè)智能體基本組件之一,例如:它執(zhí)行命名實(shí)體識(shí)別或從文本預(yù)測(cè)會(huì)話行為,那么用戶必須編寫(xiě)一個(gè)直接從 ConversationalModule 得到的類,然后這個(gè)類只由通用智能體使用。
自抽象類
用戶需要?jiǎng)?chuàng)建一個(gè)自相應(yīng) Plato 抽象類的新類,并實(shí)現(xiàn)抽象類定義的接口以及他們希望的任何其他功能。此類應(yīng)具有唯一名稱(例如「myNLG」),用于在解析配置文件時(shí)將其與其他選項(xiàng)區(qū)分開(kāi)來(lái)。在此版本中,除非用戶使用通用智能體,否則需要手動(dòng)添加解析配置文件的一些條件(例如:會(huì)話智能體、會(huì)話管理器等)。
構(gòu)建新模塊
要構(gòu)造新模塊,用戶必須將其代碼添加到從會(huì)話模塊得到的新類中。然后他們可以通過(guò)在配置中提供適當(dāng)?shù)陌窂?、類名和參?shù),用通用智能體來(lái)加載模塊。
…
MODULE_i:
package:myPackage.myModule
Class:myModule
arguments:
model_path:Models/myModule/parameters/
…
…
用戶負(fù)責(zé)確保新模塊能夠適當(dāng)?shù)靥幚砬懊婺K的輸出,并且新模塊的輸出可以按照其通用配置文件中的規(guī)定,由其他模塊恰當(dāng)?shù)厥褂谩?/p>
由 Uber AI 研發(fā)的項(xiàng)目 Plato 被用于促進(jìn) SIGDial 2019 的工作,即同時(shí)訓(xùn)練兩個(gè)通過(guò)自生成語(yǔ)言相互交流的會(huì)話智能體。在這項(xiàng)工作中,我們可以利用 Plato 輕松對(duì)這兩個(gè)會(huì)話智能體進(jìn)行訓(xùn)練,使它們中一個(gè)能實(shí)現(xiàn)餐館信息詢問(wèn),而另一個(gè)則可以提供該問(wèn)題回答的信息。并且隨著時(shí)間的推移,他們的談話將變得越來(lái)越自然。
我們相信,Plato 能夠在 Ludwig、TensorFlow、PyTorch、Keras 以及其他開(kāi)源項(xiàng)目的深度學(xué)習(xí)框架中更加無(wú)縫地進(jìn)行會(huì)話智能體的訓(xùn)練,從而改進(jìn)學(xué)術(shù)和行業(yè)應(yīng)用中的會(huì)話 AI 技術(shù)。
原文鏈接:
https://eng.uber.com/plato-research-dialogue-system/
GitHub 地址:
https://github.com/uber-research/plato-research-dialogue-system
更詳細(xì)的使用方法:
https://uber-research.github.io/plato-research-dialogue-system/
雷鋒網(wǎng) AI 科技評(píng)論
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。