0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

詳細(xì)介紹算法效果調(diào)優(yōu)的流程

深度學(xué)習(xí)自然語言處理 ? 來源:CS的陋室 ? 作者:機(jī)智的叉燒 ? 2022-08-24 09:55 ? 次閱讀

效果調(diào)優(yōu)應(yīng)該是算法工程師最基礎(chǔ)的工作了我們需要對當(dāng)前的現(xiàn)狀有一定了解后,提出有效的效果優(yōu)化方案,為指標(biāo)服務(wù),最終達(dá)到指標(biāo)提升的目標(biāo)。但是,效果調(diào)優(yōu)并不是一個容易的事,為了讓大家能更快找到有效的解決方案,完成優(yōu)化任務(wù),這里給大家介紹一下我的流程和思路。

算法效果調(diào)優(yōu)的流程

在開始之前,先和大家說清為什么要有這個流程。所謂流程,在明確的情況下,能讓大家更簡單直接地執(zhí)行,執(zhí)行過程中,更不容易遺漏關(guān)鍵點,流暢地流程能讓我們更快更有目的性地做事,所以有這個流程還是很重要的。效果調(diào)優(yōu)主要是下面幾個流程,我詳細(xì)介紹下。

明確目標(biāo)和現(xiàn)狀

一個模型也好,一個算法模塊也好,他都有自己的功能,他執(zhí)行的怎么樣,有哪些問題,距離預(yù)期差多遠(yuǎn),這都是我們要在最開始明確的,一般情況很簡單,就是看指標(biāo),例如準(zhǔn)確率和召回率,復(fù)雜的,還有一些業(yè)務(wù)角度的指標(biāo),我們必須明確,在開始執(zhí)行,為了方便大家觀測,這里列舉出需要在這步里回答的問題,供大家參考,能回答這些問題,那可以開始進(jìn)行下一步。

這個模塊的主要功能是什么,預(yù)期的指標(biāo)是多少,計算和抽樣邏輯是否具有合理性(一定要注意,有些時候出現(xiàn)的問題就在抽樣和指標(biāo)上,這個錯了,后面的優(yōu)化無從談起)。

當(dāng)前模塊的指標(biāo)是多少,距離目標(biāo)還差多少。

具體使用的技術(shù)方案是什么,這里有沒有做什么權(quán)衡和妥協(xié),這些妥協(xié)有沒有解開的可能。

上面的問題,如果能夠很清楚地回答,說明你對這個問題、模塊等都非常明確,在這個前提下去做效果調(diào)優(yōu),才是有效的。

分析和定位問題

很多新人很容易跳過這個步驟,但這往往是最重要,而且是最考驗算法工程師功力的部分。

分析和定位的過程,核心目標(biāo)是關(guān)注這幾個問題:

確定當(dāng)前方案的問題點在哪里,哪些位置或者哪些case沒有解決好。

看集中性和case分布,哪些是重點問題,需要優(yōu)先考慮哪些問題。

評估問題的難度和解決率,從而了解預(yù)期的收益。

這里的分析,我喜歡把它分為兩個視角,一個是宏觀,另一個是微觀。前者更關(guān)注整體數(shù)據(jù)上的問題,通過多個角度的統(tǒng)計,來發(fā)現(xiàn)目前數(shù)據(jù)和模型的問題,例如在多分類場景,統(tǒng)計各個類目的準(zhǔn)確率、召回率甚至各個類目的數(shù)據(jù)占比,找出類目短板,對類目短板進(jìn)行針對性提升是可以很大程度上提升總體指標(biāo)的;后者,則是進(jìn)行case分析,找出bad case的一些共性,并對共性問題進(jìn)行針對性解決,當(dāng)然這里也會考驗到不同角度的bad case抽取,這個可以結(jié)合前面宏觀的分析結(jié)論來抽樣處理。

解決方案的制定

有了前面信息的支撐,我們是可以開始進(jìn)行效果調(diào)優(yōu)了,然而,用什么方法來解決,也是一個問題,如何去找最合適的方法來解決我們上面分析出的問題。

首先,我們要知道,有哪些可行的解決方案。如果是只會換模型,調(diào)參數(shù),那招數(shù)屬實有點少,如果是這種情況,我們就應(yīng)該去調(diào)研,多去看看業(yè)界和科研界的主要方案(平時,也需要),另一方面,我們也看看簡單地,從樣本、模型、規(guī)則上是否有快速的解決方案,增加手里能打的牌,才有可能有好牌,只有儲備的夠多,才更容易從中找出好東西來解決問題。

第二步,就是方案的選擇,要從眾多方案中,找出最優(yōu)的方案,這里大家需要考慮這幾個問題:

方案對問題的解決程度是否可以明確,看能解決當(dāng)前多少的問題。

方案的上下限在哪,除了解決問題本身外,還有沒有別的問題可以解決,或者帶來哪些傷害,換言之,方案的優(yōu)缺點是什么,這點要明確。

方案需要投入多少的時間、人力、機(jī)器、數(shù)據(jù)等資源。

這些問題大家平時多少都會考慮到,但是并不一定全,尤其是后者,玩NLP的多少都會手癢試試BERT,包括我在內(nèi),但是理性思考后其實很可能不會當(dāng)做一個優(yōu)先級較高的方案了,尤其是問題都很明確的情況下。

調(diào)優(yōu)的難點問題

說到調(diào)優(yōu),其實難度比較大的,是這么幾個位置。

首先,是問題的定位難,我們往往很容易通過直觀的指標(biāo)知道我們的方案是有問題,有一定空間的,但是,具體突破口在哪里,這個會很困難。這里給大家?guī)讉€建議吧:

多看case,好的壞的,都多看看,理解業(yè)務(wù)里面常見的用例,只有理解,才能更多地發(fā)現(xiàn)問題。

當(dāng)然,我們也可以多看看很多文章,論文的、技術(shù)分享的等等,很多文章都會去聊他們面臨的問題以解決方案,這些問題其實給我們提供思路,例如“我們會不會也遇到和他們一樣的問題”。

然后,是解決方案的儲備問題。方案分兩種,一種是針對性方案,根據(jù)明顯的問題我們可以想到一些快速的解決方案,這個往往取決于我們對業(yè)務(wù)的理解能力和方法的熟悉程度。第二種,是一些長期的,依賴儲備的方案,很多業(yè)界的方法會給我們很多思路,這些思路的內(nèi)化能讓我們很快從中找到解決方案。無論是前者還是后者,其實都很依賴我們的平時積累,這個積累不僅在于量,還在于質(zhì),也就是深度,對方案理解的越清楚,越能看清本質(zhì),我們用起來其實會更加得心應(yīng)手。

第三點,是技術(shù)方案的權(quán)衡。權(quán)衡是根據(jù)我們需要面臨的技術(shù)環(huán)境的,例如數(shù)據(jù)、機(jī)器、時間、人力等,有的方案可能可以很好的解決問題,但是會花費(fèi)很多成本,例如NLPer最喜歡的預(yù)訓(xùn)練模型,他是很依賴機(jī)器的,后續(xù)即使效果真的會有提升,也要考慮到性能和機(jī)器的問題最終可能上不了線就功虧一簣了。這個其實挺吃經(jīng)驗,權(quán)衡這個能力是需要經(jīng)過項目的歷練,逐步形成的,坑才多了才能把坑繞過,這點需要大家在進(jìn)行項目的過程中多思考多總結(jié)。

調(diào)優(yōu)能力

上面聊了很多有關(guān)調(diào)優(yōu)流程的東西,但是,調(diào)優(yōu)本身的能力要求還是比較高的,這里我整理了一些有關(guān)調(diào)優(yōu)能力的能力項和成長的階段,看看對大家有沒有什么幫助,當(dāng)然,我自己的能力也沒到很高的水平,持續(xù)學(xué)習(xí)和成長吧。

首先是執(zhí)行力,在問題都給清楚了,解決方案也明確了,這個時候能編碼實現(xiàn),這個應(yīng)該是最基本的能力了。

第二層就是獨(dú)立完成的能力。

首先,能通過多種分析手段,診斷出現(xiàn)有方案的問題。

第二,就是解決方案的提出。這里背后,比較重要的事解決方案和技術(shù)的儲備。這點是需要長期積累的,一方面是對數(shù)據(jù)、場景的熟悉,另一方面是對業(yè)界和科研界的技術(shù)的了解,如果儲備不夠,很多問題絕對是解決不了的。

第三層,其實除了獨(dú)立完成以外,能有整個項目的視野。

現(xiàn)狀的理解和未來的規(guī)劃,能帶著規(guī)劃去設(shè)計解決方案。

能夠跳出問題,結(jié)合業(yè)務(wù)等因素來解決問題和甚至到框架和系統(tǒng)的設(shè)計。



審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4580

    瀏覽量

    92361

原文標(biāo)題:談?wù)勑Ч{(diào)優(yōu)的流程和能力

文章出處:【微信號:zenRRan,微信公眾號:深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    MMC DLL調(diào)優(yōu)

    電子發(fā)燒友網(wǎng)站提供《MMC DLL調(diào)優(yōu).pdf》資料免費(fèi)下載
    發(fā)表于 10-11 11:48 ?0次下載
    MMC DLL<b class='flag-5'>調(diào)</b><b class='flag-5'>優(yōu)</b>

    TDA3xx ISS調(diào)優(yōu)和調(diào)試基礎(chǔ)設(shè)施

    電子發(fā)燒友網(wǎng)站提供《TDA3xx ISS調(diào)優(yōu)和調(diào)試基礎(chǔ)設(shè)施.pdf》資料免費(fèi)下載
    發(fā)表于 10-11 10:16 ?0次下載
    TDA3xx ISS<b class='flag-5'>調(diào)</b><b class='flag-5'>優(yōu)</b>和調(diào)試基礎(chǔ)設(shè)施

    智能調(diào)優(yōu),使步進(jìn)電機(jī)安靜而高效地運(yùn)行

    電子發(fā)燒友網(wǎng)站提供《智能調(diào)優(yōu),使步進(jìn)電機(jī)安靜而高效地運(yùn)行.pdf》資料免費(fèi)下載
    發(fā)表于 09-24 11:08 ?1次下載
    智能<b class='flag-5'>調(diào)</b><b class='flag-5'>優(yōu)</b>,使步進(jìn)電機(jī)安靜而高效地運(yùn)行

    MMC SW調(diào)優(yōu)算法

    電子發(fā)燒友網(wǎng)站提供《MMC SW調(diào)優(yōu)算法.pdf》資料免費(fèi)下載
    發(fā)表于 09-20 11:14 ?0次下載
    MMC SW<b class='flag-5'>調(diào)</b><b class='flag-5'>優(yōu)</b><b class='flag-5'>算法</b>

    TAS58xx系列通用調(diào)優(yōu)指南

    電子發(fā)燒友網(wǎng)站提供《TAS58xx系列通用調(diào)優(yōu)指南.pdf》資料免費(fèi)下載
    發(fā)表于 09-14 10:49 ?0次下載
    TAS58xx系列通用<b class='flag-5'>調(diào)</b><b class='flag-5'>優(yōu)</b>指南

    OSPI控制器PHY調(diào)優(yōu)算法

    電子發(fā)燒友網(wǎng)站提供《OSPI控制器PHY調(diào)優(yōu)算法.pdf》資料免費(fèi)下載
    發(fā)表于 08-30 11:12 ?0次下載
    OSPI控制器PHY<b class='flag-5'>調(diào)</b><b class='flag-5'>優(yōu)</b><b class='flag-5'>算法</b>

    深度解析JVM調(diào)優(yōu)實踐應(yīng)用

    Tomcat自身的調(diào)優(yōu)是針對conf/server.xml中的幾個參數(shù)的調(diào)優(yōu)設(shè)置。首先是對這幾個參數(shù)的含義要有深刻而清楚的理解。
    的頭像 發(fā)表于 04-01 10:24 ?393次閱讀
    深度解析JVM<b class='flag-5'>調(diào)</b><b class='flag-5'>優(yōu)</b>實踐應(yīng)用

    鴻蒙開發(fā)實戰(zhàn):【性能調(diào)優(yōu)組件】

    性能調(diào)優(yōu)組件包含系統(tǒng)和應(yīng)用調(diào)優(yōu)框架,旨在為開發(fā)者提供一套性能調(diào)優(yōu)平臺,可以用來分析內(nèi)存、性能等問
    的頭像 發(fā)表于 03-13 15:12 ?349次閱讀
    鴻蒙開發(fā)實戰(zhàn):【性能<b class='flag-5'>調(diào)</b><b class='flag-5'>優(yōu)</b>組件】

    jvm調(diào)優(yōu)工具有哪些

    JVM調(diào)優(yōu)是提高Java應(yīng)用程序性能的重要手段,而JVM調(diào)優(yōu)工具則是輔助開發(fā)人員進(jìn)行調(diào)優(yōu)工作的利
    的頭像 發(fā)表于 12-05 11:44 ?977次閱讀

    jvm調(diào)優(yōu)常用命令

    JVM調(diào)優(yōu)是提升Java應(yīng)用性能的一個重要方面,通過合理設(shè)置JVM參數(shù)可以達(dá)到優(yōu)化應(yīng)用性能、提高系統(tǒng)穩(wěn)定性的目的。本文將為你詳細(xì)介紹JVM調(diào)
    的頭像 發(fā)表于 12-05 11:43 ?615次閱讀

    jvm調(diào)優(yōu)主要是調(diào)哪里

    JVM調(diào)優(yōu)主要涉及內(nèi)存管理、垃圾回收、線程管理與鎖優(yōu)化等方面。下面將詳細(xì)介紹每個方面的調(diào)優(yōu)技術(shù)和
    的頭像 發(fā)表于 12-05 11:37 ?1439次閱讀

    jvm參數(shù)的設(shè)置和jvm調(diào)優(yōu)

    JVM(Java虛擬機(jī))參數(shù)的設(shè)置和調(diào)優(yōu)對于提高Java應(yīng)用程序的性能和穩(wěn)定性非常重要。在本文中,我們將詳細(xì)介紹JVM參數(shù)的設(shè)置和調(diào)
    的頭像 發(fā)表于 12-05 11:36 ?1258次閱讀

    jvm調(diào)優(yōu)參數(shù)

    JVM(Java虛擬機(jī))是Java程序的運(yùn)行環(huán)境,它負(fù)責(zé)解釋Java字節(jié)碼并執(zhí)行相應(yīng)的指令。為了提高應(yīng)用程序的性能和穩(wěn)定性,我們可以調(diào)優(yōu)JVM的參數(shù)。 JVM調(diào)優(yōu)主要涉及到堆內(nèi)存、垃圾
    的頭像 發(fā)表于 12-05 11:29 ?558次閱讀

    什么場景需要jvm調(diào)優(yōu)

    JVM調(diào)優(yōu)是指對Java虛擬機(jī)進(jìn)行性能優(yōu)化和資源管理,以提高應(yīng)用程序的運(yùn)行效率和吞吐量。JVM調(diào)優(yōu)的場景有很多,下面將詳細(xì)
    的頭像 發(fā)表于 12-05 11:14 ?1272次閱讀

    javajvm調(diào)優(yōu)有幾種方法

    JVM調(diào)優(yōu)是Java應(yīng)用程序性能優(yōu)化過程中的重要步驟,它通過針對JVM進(jìn)行優(yōu)化來提高應(yīng)用程序的性能和可靠性。JVM調(diào)優(yōu)可以根據(jù)具體的場景和需求,采用不同的方法和策略進(jìn)行。 首先,我們需
    的頭像 發(fā)表于 12-05 11:11 ?1963次閱讀