<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          應(yīng)用算法串講之計(jì)算復(fù)雜度優(yōu)化與組合優(yōu)化

          共 2164字,需瀏覽 5分鐘

           ·

          2021-03-01 12:30

          大數(shù)據(jù)文摘授權(quán)轉(zhuǎn)載自龍心辰

          作者:龍心辰

          從事算法工作以來,涉獵過不少算法。有些算法被淘汰,有些如日中天,有些則退守在某些特定的領(lǐng)域中頑強(qiáng)地生存,并不斷給算法工作者提供思想啟發(fā)。

          自己的一個(gè)方向是算法在產(chǎn)業(yè)界的應(yīng)用,一個(gè)很強(qiáng)烈的感受是即便新的算法層出不窮,真正在實(shí)踐上有生命力的并不在于其思想有多炫,而是其算法特質(zhì)能夠最好地適應(yīng)具體場(chǎng)景的需求。

          這么多算法,什么時(shí)候用什么算法,是需要梳理清晰的。然而算法思想過于復(fù)雜,想用一兩篇文章講得面面俱到幾乎不可能。

          所以筆者希望用一個(gè)系列專題試圖從應(yīng)用的視角統(tǒng)一串講一下不同算法,盡量少講公式,著重從思想角度關(guān)注不同算法之間的橫向聯(lián)系和適用條件,希望對(duì)大家應(yīng)用算法落地有些幫助。

          01

          最優(yōu)化的一些簡(jiǎn)化約定

          如果說非要找一條主線串起來各種不同算法,筆者想來想去還是要靠最優(yōu)化思想。最優(yōu)化是一種非常直觀的思想,一般來說是指:在有限的約束條件的下控制一些自變量使得目標(biāo)(因變量)達(dá)到最大值(或最小值)的過程。所以它有3個(gè)核心概念:目標(biāo),自變量,約束。
          目標(biāo)(因變量):F(x)
          自變量(控制條件):x
          約束:g(x)=0
          目標(biāo)優(yōu)化函數(shù)很大程度決定了算法種類。一般 決策 相關(guān)的問題的優(yōu)化目標(biāo)是價(jià)值函數(shù),預(yù)測(cè) 相關(guān)的問題優(yōu)化目標(biāo)是預(yù)測(cè)誤差。
          目標(biāo)(因變量)是關(guān)于自變量的函數(shù),而這里的自變量可以是整數(shù)、實(shí)數(shù)、函數(shù)或程序。整數(shù)、實(shí)數(shù)及其構(gòu)成的數(shù)組、向量、矩陣作為自變量比較好理解。


          函數(shù)作為自變量則構(gòu)成了一個(gè)套娃:目標(biāo)函數(shù)F(f)是自變量函數(shù)f(x)的函數(shù),這個(gè)自變量函數(shù)f(x)本身也有自己的自變量x。這種情況甚至還比較常見,絕大部分機(jī)器學(xué)習(xí)算法都是為了尋找一個(gè)預(yù)測(cè)函數(shù)f(x),該函數(shù)的預(yù)測(cè)誤差L(f)要盡量小。
          程序本身可以視作一種特殊的函數(shù),接下來要介紹的計(jì)算復(fù)雜度優(yōu)化算法就一個(gè)典型例子。
          另外,約束條件是對(duì)自變量的約束,可以是關(guān)于自變量的一組(不)等式方程。約束不是最優(yōu)化問題的必須要有的,但十分常見,而且加了約束的問題可能會(huì)更難。

          02

          計(jì)算復(fù)雜度優(yōu)化算法

          計(jì)算復(fù)雜度優(yōu)化算法是一類非常重要的算法,用之前約定的最優(yōu)化形式描述如下:
          最小化目標(biāo):時(shí)間復(fù)雜度T(f)與空間復(fù)雜度S(f)
          自變量:一段程序f
          滿足條件(約束):程序f能夠?qū)崿F(xiàn)某個(gè)特定的功能(可套娃)
          對(duì)時(shí)間復(fù)雜度和空間復(fù)雜度的追求貫穿在整個(gè)應(yīng)用開發(fā)過程。即便是機(jī)器學(xué)習(xí)相關(guān)算法,無論是訓(xùn)練還是預(yù)測(cè),都需要持續(xù)關(guān)注時(shí)間空間相關(guān)的優(yōu)化以及它們之間的權(quán)衡。

          03

          約束:組合最優(yōu)化算法套娃

          這里首先要注意的是約束本身也可以是一個(gè)最優(yōu)化問題,又構(gòu)成了一個(gè)套娃,套娃玩出了花。


          具體的最優(yōu)化問題可以是:
          1. 將長(zhǎng)度為n的整數(shù)數(shù)組劃分為m個(gè)片段(約束),最小化每個(gè)片段和的最大值(目標(biāo))——LeetCode1011。

          2. 在長(zhǎng)度為n的整數(shù)數(shù)組中,找出一個(gè)的和大于等于s的連續(xù)子數(shù)組(約束),最小化子數(shù)組的長(zhǎng)度(目標(biāo))——LeetCode209。

          3. 在長(zhǎng)度為n的整數(shù)數(shù)組中,找出一個(gè)遞增子序列(約束),最大化子序列的長(zhǎng)度(目標(biāo))——LeetCode300。

          里層套娃的最優(yōu)化問題往往是一個(gè)帶約束的組合優(yōu)化問題,以LeetCode1011為例其形式化表述如下:
          最小化目標(biāo)(程序出參):所有劃分片段的子數(shù)組和的最大值。
          自變量(程序入?yún)ⅲ洪L(zhǎng)度為n的整數(shù)數(shù)組,整數(shù)m。
          約束(程序必需滿足邏輯):將整數(shù)數(shù)組劃分為m個(gè)子片段。
          這類組合優(yōu)化問題難以通過梯度下降法之類的方法自動(dòng)化處理,往往需要在可行約束空間中遍歷可行解才能找到最優(yōu)值。所以關(guān)鍵的是利用題目的特點(diǎn)降低遍歷的時(shí)間復(fù)雜度。處理它們的方法包括二分查找、快慢指針、貪心與動(dòng)態(tài)規(guī)劃等,分別適合處理最優(yōu)化問題存在全局單調(diào)(有序)性、可行約束空間可排除、子問題之間的約束存在遞推關(guān)系等情況,本質(zhì)都是降低遍歷可行約束空間的計(jì)算量。
          組合優(yōu)化不僅僅是存在于面試題中,在產(chǎn)業(yè)實(shí)踐中也屢屢能看到他們的身影。而且目前的一個(gè)趨勢(shì)是比較多地與機(jī)器學(xué)習(xí)、強(qiáng)化學(xué)習(xí)等方法結(jié)合。
          當(dāng)然,產(chǎn)業(yè)應(yīng)用中的組合優(yōu)化可能沒有前面例子中存在多種特定簡(jiǎn)化條件那么理想。真實(shí)的情況可能極其復(fù)雜,如外賣訂單聚合與分配等等。實(shí)踐中的處理方式可能會(huì)放棄全局最優(yōu)的探索,而是爭(zhēng)取一些好的局部最優(yōu)結(jié)果,降低可行約束的探索空間。 如在序列化標(biāo)注過程中可以用全局最優(yōu)的維特比算法,但在機(jī)器翻譯的推斷過程中的可行空間十分巨大,便采用Beam search這樣近似局部最優(yōu)的算法以降低探索空間。

          04

          自變量:程序

          回過頭來看外層套娃的最優(yōu)化問題,其目的就是找出一個(gè)最佳的可執(zhí)行的程序。而這個(gè)是需要人手動(dòng)寫出來的。那有沒有能夠自動(dòng)化編程的算法呢?

          這其實(shí)是人工智能的終極夢(mèng)想,只是目前還做不到。但對(duì)于特的任務(wù)還是可以的,而且需要外界給機(jī)器喂數(shù)據(jù)教它——而這恰恰是接下來要介紹的機(jī)器學(xué)習(xí)算法的核心思路。我們將在接下來的文章中重點(diǎn)探討。






          本系列框架圖

          以下是整個(gè)系列文章打算探討的內(nèi)容,當(dāng)然隨著系列的撰寫可能會(huì)調(diào)整。


          點(diǎn)「在看」的人都變好看了哦!
          瀏覽 72
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  中文字幕在线成人 | 久久A V电影 | 婷婷激情在线视频 | 欧美亚洲黄片 | 亚洲特黄片|