成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

「研究問題」寫不明白,讀者一臉懵!MIT博士手把手教你寫「問題設(shè)定」:論文得能變代碼才行

開發(fā) 前端
抽象 Problem 類表示論文中定義的問題類別,即使對于相對簡單和熟悉的問題,如圖像分類,也需要描述地非常精確。

最近,MIT博士Tom Silver發(fā)表了一篇博客,他認(rèn)為有很多AI論文都缺少了「問題設(shè)定」(Problem Setting)部分,或者是字?jǐn)?shù)不夠?qū)е露x不夠清晰,讓讀者在閱讀論文后很難用代碼復(fù)現(xiàn)出具體方法。

博客中介紹了自己關(guān)于如何寫好問題設(shè)定部分的心得,并給出了一些他認(rèn)為寫的比較好的論文樣例以供參考學(xué)習(xí)。

圖片

Tom Silver是麻省理工學(xué)院計算機科學(xué)專業(yè)五年級博士生,本科畢業(yè)于哈佛大學(xué)計算機科學(xué)與數(shù)學(xué)專業(yè),主要研究方向是智能機器人,如自動規(guī)劃、程序合成等。

問題設(shè)定里應(yīng)該有什么?

除純理論研究、實驗現(xiàn)象的實證、提出新基準(zhǔn)數(shù)據(jù)等類型的研究外,大部分AI領(lǐng)域的論文中基本都包括三要素:提出了一種新的方法(new method),在某類問題(a certain class of problems)上性能表現(xiàn)良好(perform well);

也就是說,在設(shè)置論文問題時,應(yīng)該能回答三個問題:

1. 這篇論文考慮的是哪一類問題?

這個問題對于潛在讀者來說很重要,他們更想了解手里的問題是否與論文中的問題類別契合。

2. 方法的形式是什么?

這個問題對于尋求替代方法的潛在開發(fā)者來說很重要,他們需要知道應(yīng)該做出怎樣的設(shè)計選擇。

3. 如何測試方法的性能?

這個問題不僅對審稿人來說有價值,對于想要采納論文中研究方案的普通讀者來說也有用。

需要注意的是,研究背景與問題設(shè)定不同,可以為其他領(lǐng)域的讀者提供通用背景知識,但不一定能回答這三個問題。

問題設(shè)定應(yīng)該寫在方法章節(jié)前,并且應(yīng)該給予讀者足夠的信息,在讀完這部分后就可以自己思考如何設(shè)計方法來解決該問題。

把文字寫成代碼

通過一個簡單的測試,就可以檢查出自己論文中的問題設(shè)置部分是否清晰,且足夠完整。

在讀者閱讀完問題設(shè)定部分后,你就需要問問自己,目標(biāo)受眾是否能夠?qū)崿F(xiàn)Problem抽象類、Method抽象類以及run函數(shù)(輸入為Problem和Method,輸出為性能指標(biāo))。

抽象 Problem 類表示論文中定義的問題類別,即使對于相對簡單和熟悉的問題,如圖像分類,也需要描述地非常精確。

圖像是灰度、RGB、RGB-D還是任意N維矩陣?尺寸可以不同嗎?可能的類別是否固定和已知?數(shù)據(jù)集中是否存在訓(xùn)練/驗證/測試集分割?

如果在問題設(shè)定部分中已經(jīng)明確回答了這些問題,讀者應(yīng)該能將文本轉(zhuǎn)換成如下代碼:

import abcimport timefrom dataclasses import dataclassfrom typing import List, Set, Tupleimport numpy as npfrom numpy.typing import NDArrayGrayImage = NDArray[np.uint8]  # two-dimensionalLabel = str  # e.g., "cat"class Problem(abc.ABC):  """An image classification dataset."""  @abc.abstractmethod  def get_training_data(self) -> List[Tuple[GrayImage, Label]]:    """Labeled data for training."""  @abc.abstractmethod  def get_evaluation_data(self) -> List[Tuple[GrayImage, Label]]:    """Held-out labeled data for evaluation."""  @abc.abstractmethod  def get_image_dims(self) -> Tuple[int, int]:    """Images assumed the same size, e.g., (32, 32)."""  @abc.abstractmethod  def get_all_labels(self) -> Set[Label]:    """Output classes assumed fixed, e.g., {"cat", "no-cat"}."""

Method 抽象類描述了論文中提出方法的基本形式。

Method類可從Problem中獲得哪些信息?Method需要對這些信息做什么?

同樣,即使對于熟悉的問題設(shè)定,也需要在寫作時保持足夠精確,以便在實現(xiàn)時不會有歧義:

class Method(abc.ABC):  """A method for image classification."""  @abc.abstractmethod  def init(self, image_dims: Tuple[int, int], labels: Set[Label]) -> None:    """Initialize the method before training starts."""  @abc.abstractmethod  def train(self, training_data: List[Tuple[GrayImage, Label]]) -> None:    """Train the method given training data."""  @abc.abstractmethod  def predict(self, image: GrayImage) -> Label:    """Predict the class label for an image."""

run 函數(shù)描述了問題和方法之間的接口,并確定最終報告的性能指標(biāo)。

對于圖像分類任務(wù)來說,實現(xiàn)是直接的,但仍需要選擇與問題相關(guān)的評估指標(biāo),選擇的過程也需要在文中清晰地描述出來。

@dataclassclass Metrics:  """Metrics of interest for image classification."""  training_time: float  evaluation_accuracy: floatdef run(problem: Problem, method: Method) -> Metrics:  """Train and evaluate a method on a problem."""  # Initialization.  image_dims = problem.get_image_dims()  labels = problem.get_all_labels()  method.init(image_dims, labels)  # Training.  training_data = problem.get_training_data()  start_time = time.perf_counter()  method.train(training_data)  training_time = time.perf_counter() - start_time  # Evaluation.  evaluation_data = problem.get_evaluation_data()  num_correct = 0  num_total = 0  for img, ground_truth_label in evaluation_data:    num_total += 1    predicted_label = method.predict(img)    if ground_truth_label == predicted_label:      num_correct += 1  accuracy = num_correct / num_total  return Metrics(training_time, accuracy)

在實驗中,文中需要考慮不同的子類 Method (新提出的方法、基線和消融實驗)和不同的子類 Problem (具有訓(xùn)練/測試分割的不同數(shù)據(jù)集,不同的強化學(xué)習(xí)環(huán)境等)。

如果問題設(shè)定一致,應(yīng)該可以直接運行,然后在Result章節(jié)中報告性能。

metrics = {}for problem in problems:  for method in methods:    metrics[(problem, method)] = run(problem, method)

這部分的重點并不是讓讀者實際實現(xiàn)任何可運行的代碼,但如果讀者能夠?qū)崿F(xiàn)這兩個抽象類和run函數(shù),并給出足夠的motivation說明,那么問題設(shè)定部分就算寫的比較成功了。

代碼之外的語義

雖然上面提出的測試可以被視為問題設(shè)定部分的必要條件,但卻不是充分條件,即并不是問題設(shè)定的所有特性都可以在代碼中被捕獲。

一些額外的語義信息應(yīng)該表達(dá)出超出測試中檢查的句法(syntactic)信息,包括:

1. 上面運行示例中的灰度圖像可能并不是隨機陣列,而是真實存在或生成的圖像,以結(jié)構(gòu)化或非結(jié)構(gòu)化的方式存儲;也可能是來自互聯(lián)網(wǎng)的隨機圖像子集,或者是精選的卡通長頸鹿集合。

2. 分類標(biāo)簽可能有部分錯誤的情況:標(biāo)簽可以由人類(專家或非專家)進(jìn)行標(biāo)注,也可以是用腳本進(jìn)行自動化標(biāo)注。

3. 訓(xùn)練可能意味著在大型計算機集群上運行一次,持續(xù)很長一段時間,或者在嵌入式設(shè)備上運行數(shù)千次,每次持續(xù)很短的時間;預(yù)測也有類似的自由度。

語義信息在問題設(shè)定部分中很難檢查,但它的重要性并不亞于問題本身,為了確保意圖是清晰明確的,用一個或多個具體的例子來說明你的環(huán)境中的問題和方法是很有用的;將文中的問題設(shè)定與之前相關(guān)工作中的問題進(jìn)行比較和對比也很有用。

優(yōu)秀樣例

有一些論文在問題設(shè)定部分寫的非常好。

圖片圖片

論文鏈接:https://arxiv.org/pdf/2011.10024.pdf

這篇論文在闡述問題類別時寫的特別好,將其基本設(shè)定描述為MDP的分布。

但作者并沒有就此止步,還直觀地、形式化地描述了文中提出方法可以運行的一個分布,還清晰地建立了問題設(shè)定和其他常見問題之間的關(guān)系。

圖片圖片

論文鏈接:https://openreview.net/pdf?id=bERaNdoegnO

這篇論文的問題設(shè)定部分對問題目標(biāo)有一個出色的、簡潔的描述,作者選擇了一個相對狹窄的框架來解決問題。

圖片圖片

論文鏈接:https://arxiv.org/pdf/2301.06054.pdf

這篇論文中有一個非常簡潔的問題定義,包含了所有的基本信息,對在線訓(xùn)練和評估期間發(fā)生的所有事情都進(jìn)行了描述,方法的形式也是非常清晰的。

圖片圖片

論文鏈接:https://arxiv.org/pdf/2303.04912.pdf

這篇論文在描述非常復(fù)雜的問題設(shè)定方面做得非常好,使用了圖表輔助。

圖片圖片

論文鏈接:https://arxiv.org/pdf/2306.06236.pdf

這篇文章的作者找到了一個明確的方法,從一個抽象描述開始,然后用符號讓問題變得清晰;問題設(shè)定中有很多符號,但在這種情況下,符號是非常有必要的,對閱讀來說也很有幫助。

參考資料:

https://lis.csail.mit.edu/whats-your-problem-an-oft-missing-section-in-ai-papers/

責(zé)任編輯:武曉燕 來源: 新智元
相關(guān)推薦

2021-10-18 17:54:13

論文博士數(shù)據(jù)

2023-12-06 08:28:44

禮物系統(tǒng)用例圖

2023-03-27 08:28:57

spring代碼,starter

2017-07-19 13:27:44

前端Javascript模板引擎

2014-01-22 09:19:57

JavaScript引擎

2020-04-14 10:20:12

MySQL數(shù)據(jù)庫死鎖

2024-10-16 11:40:47

2021-06-22 10:43:03

Webpack loader plugin

2018-05-16 15:46:06

Python網(wǎng)絡(luò)爬蟲PhantomJS

2018-03-23 20:45:23

機器學(xué)習(xí)NLP文本數(shù)據(jù)

2018-05-16 13:50:30

Python網(wǎng)絡(luò)爬蟲Scrapy

2018-05-22 16:28:46

Python網(wǎng)絡(luò)爬蟲URL去重

2021-07-09 17:27:58

ButterKnife工具APT

2015-12-23 11:32:50

2019-10-22 14:30:11

機器學(xué)習(xí)人工智能計算機

2022-03-08 11:17:54

函數(shù)指針回調(diào)函數(shù)C語言

2018-05-22 15:30:30

Python網(wǎng)絡(luò)爬蟲分布式爬蟲

2022-05-18 08:51:44

調(diào)用模板后端并行

2018-05-14 16:34:08

Python網(wǎng)絡(luò)爬蟲Scrapy

2017-10-29 21:43:25

人臉識別
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 超碰人人人人 | 亚洲成人精品久久 | 最新av中文字幕 | 日本成人三级电影 | 国产精品美女久久久久久久网站 | 国产永久免费 | 亚洲在线视频 | 精品国产欧美 | 精品欧美激情精品一区 | 一区二区免费高清视频 | 日本一区二区三区免费观看 | 91视频精选 | 久久国产精品偷 | 午夜免费小视频 | 涩涩视频网站在线观看 | 99久久久久国产精品免费 | 国产福利视频 | 国产精品视频不卡 | 成人在线观看亚洲 | 日韩精品一区二区三区中文在线 | 中文字幕免费观看 | 91久久精品国产免费一区 | 91短视频网址 | 亚洲欧美视频一区 | 国产精品一区二区三 | 九七午夜剧场福利写真 | 色婷婷精品国产一区二区三区 | 国产夜恋视频在线观看 | 99re99 | 视频一区二区三区中文字幕 | 欧美性受xxxx白人性爽 | 国产精品久久久久无码av | 91精品久久久久久久久久入口 | 国产成人精品一区二区三区四区 | 欧美三级在线 | 亚洲免费人成在线视频观看 | 欧美一级欧美三级在线观看 | 国产中文 | 国产欧美日韩精品一区 | 亚洲日日操 | a看片 |