貪婪算法

2021-02-20 映秋

這首歌聽起來有種在搖搖晃晃中前行的感覺。很舒適。

不想吐槽雨了。不過說起來中午那陣的雨還是很有情調的。細細的雨絲,看不太見,待得走到雨裡才會發現它們淋在頭上,人就糾結於是接著走還是往回退的兩難之中。若是身邊跟著可愛的女孩子,能目不斜視地悄悄挽起來她的手,然後一起漫步在這樣的雨幕中倒也不錯。就是中午旁邊跟著的是寶=_=。一口髒話差點沒把我送走。嚶。

今天做錯了一道題,錯誤答案如下。

正確答案是把連著展開兩次的扇形兩個點連起來,我把它展開了一次,找到最短,然後乘以了兩倍,最後結果果然就是錯的!令人驚嘆,它完美地詮釋了貪婪算法的內涵,局部最優,最終未必最優,或者有時候可以不負責任而武斷地說,最終必定不最優。這個算法是有哲學意味在裡面的,映射了我們的人生,也許也是這樣,總在局部與全局中選錯了那個最優。

接著昨天說的快樂講,倘若我中考能最優,那就是進上中,那麼現在應該就不會這麼快樂,幸福還是來自於比較的,雖然無意說身邊的人許多不如我,但不得不說比起智商,我可能有些許優勢,這點讓我更容易達成和別人一樣的成就,心裡就會有些自得,塞翁失馬焉知非福說的也是這樣的道理。

時而就會有一句話從腦海裡跳出來,在那一瞬間對它有了很深刻的理解,意識到自己先前以為的理解都是一件天真的錯事。不過過了這個感悟到的時刻,之後再回想,就只變成可以意會而不可以言傳的東西了,甚至有時候自己也不見得再意會得到。像希爾伯特晚年被學生問起他早些年的一個證明,他驚嘆到:是誰想出來這麼巧妙的證明的!哈哈哈,剛開始我以為這是一個數學家的幽默。後來想到,可能歲數上去了我們真的會有點糊塗。剛剛我這簡單的幾行字其實就可以有兩層理解,不知道你們意會了沒有呢。

作業太多,估計要到明天才寫得完了。就說到這裡吧~

今天正文和這個不無關係,講的是智商。我其實會討厭別人說我聰明,感覺這句話同時伴隨著另一句省略掉,但是意思又傳達給了你。就是【但是你努力不夠】。如果聽到這種話我會很氣憤地說只是你這種蠢人不會努力而已。不過這兩者是否有必然聯繫呢?就像我們一直想知道,IQ×EQ是不是等於c呢,被人說IQ或者EQ低的人當然想證明這一點,以期待自己有一點長處。而兩個數值比較平均的人就希望這個能被證偽,這樣他們就有了同時兩項突出的可能。哈哈,多麼嘲諷。這也是人性的一小部分吧。

另外就是對補課和刷題的不屑,我覺得這東西純粹妨害智力,就是一種憂慮迫使的行為而已。確實如果真的沒有辦法了那捨棄一下也沒有所謂,但其實哪裡有真的沒有辦法了的情況。這個也不多贅述,只是把下面的話說的更明白清楚一點而已。

意識與智慧

聰不聰明,是從小到大身邊的人經常討論的一個話題。不聰明的人喜歡談聰明,因為聰明可以作為一種藉口。聰明的人有時候反倒避諱談聰明,因為他的聰明成為了別人口中的藉口。不過這種東西確實是很難去衡量的,有的人做事很靈活,做題稍差;也有的做題還行,做事做人倒是一塌糊塗。在我們慣有的思維裡,總是很希望智商和情商的乘積是個定值:這樣智商比不過人家還可以有更不同一點的藉口。智商和情商本身,又包含了很多很多的方面,智商有邏輯推理,計算,記憶等等,情商也會體現在各種不同的行為上。一看這兩個詞就知道發明這兩個詞的人試圖給予我們所展現出來的超人因素一個詳細的劃分(大家表現相同的時候是沒人在意智商或者情商的。)。智慧這個詞不一樣,它很模糊,模糊的好處和壞處都是模糊,這裡想借用它的好處,來說一下智慧當中的一個方面:意識。

這個詞其實在遊戲裡面接觸到的最多。玩五對五的對戰類遊戲的時候,經常會提到這個詞,往往會說某人沒有意識,察覺不到對方的動向。在我看來,意識在這類遊戲中,就如同操控大局的手一樣,這雙手未必要將每一個細節做到最好,這很難,但放棄一些細節,抓住關鍵的部分,推測出大致的結果作出應對,這就體現出了意識。就像遊戲打多了,打著打著會忽然感覺到:對面來人了。

意識的關鍵,在於提前。疫情以來,許老師多次有意展現他的「預見」能力。根據已有的信息,能夠推測出未來的發展趨勢,這就體現出了意識,進而就體現了智慧。很多我們眼中的聰明,都來自於提前。這是我認為,拉開不同水平的人之間差距的最快,最有效的方法。學習就是這樣。爹媽有幾次都提到現在的內容比他們學的要難(應該是一種大體的趨勢),而為什麼我們可以接受這樣的難度呢?就在於一步步地提前。先前就學得更多,就滾雪球一般,越學越多,差距也就越來越大。提前看到了結果會怎麼樣,中間細節自然可以一定程度上去忽略,只要最後達成結果就可以了。不過數學又是比較有趣的例外,做證明的時候我們知道剛開始時是什麼樣子,甚至知道最後要變成什麼樣子,中間卻沒辦法輕鬆地弄出來,或許是因為時間本身在流逝,現實世界的所有事情就算不推一把也會慢慢地發展出來,數學不一樣。它是一個只要你不推就不會動的領域。

補課其實就是一種變相的提前。不過因為絕大多數人在提前,所以經常會顯得少部分人落後。這是來自於一些本身混得比較好的上一輩的意識所驅使的,他們發現了這個規律,沒找到方法再前一步,卻可以保證不落後與人,故而就做出這樣的決定。混的特別好的上一輩,讓自己的孩子補課嗎?不太清楚,我猜測有可能大多數都不會這麼做。這是更深一步的意識,意識到一步的提前,可能會帶來某一步的落後,這是我根據我有的信息,推測的他們根據已有的信息推測出來的東西。這麼看其實我們很受上一輩的意識所在高度的限制,他們可以意識到哪一步,就會盡力推我們一把讓我們到那一步。

確實是這樣。很多時候我們對於一整個自己的人生的把控,來自於模仿,借鑑。不像遊戲裡,這局輸了,能有機會總結重頭來過,再輸,再來,直到自己潛意識地培養出了意識,再潛意識地應用。我們常說人生只有一次,很多事情是不能重來的。大抵是對的,或許改成不能重來多次更恰當。我們都沒有經歷過高考,但我們都從別人的嘴裡意識到了高考的重要性,聚焦得越多,就越是重視。當然,這樣的重視也是基於最初不重視下吃到的一些苦。我想我們人之所以能不斷進步,就是在於意識。如果人最開始只是餓了才想到打獵,而不是想到將來某個時刻會餓,提前地去打獵,那麼是肯定不會有進步的。只要有一個人提前了,大家看到好處,就紛紛模仿、借鑑了。現在似乎也沒有什麼不一樣,只是不會再把吃飽明天的飯當做目標罷了。

意識很重要,這相當於對大局的整體上的把控,這並非是說細節不重要,沒有細節是不行的。但仔細一想好像自古以來,許多的故事裡都有意提到是聰明人管著莽夫,越聰明,混的越好,以至於我心裡也形成了這樣的概念,在細節上的忽略是可以的,但大局的把握一定要精準。不過仔細想想還是不太對。在一些混沌的時代我們可以看到一些清醒的人被混沌的人淹沒了,發得出聲音,但是沒有太大的作用,因為細節無法落實到位了。就好像小時候讀三國,最喜歡諸葛亮,覺得很神秘,很睿智,運籌帷幄,決勝千裡之外,現在想想,如果士兵和將領都是烏合之眾,他再睿智,再能算,又有什麼用呢。

好在我們現在的社會,在絕大多數人眼裡,應該還算得上是不混沌的,多數人都是清醒的。所以才能夠體現出意識的作用,或許這個東西確實看一點天分,有的人無師自通,一上手就知道怎麼布局,怎麼規劃,有的人學著學著就學了一輩子,也未必真的有什麼意識。細節對天分的要求就沒有那麼嚴苛了,願意認真做,大多數人都可以做的不錯,以至於有的時候我們不太願意去做這些看上去很容易的事情。可能果斷地做出選擇,也是意識的體現吧,不論選什麼都好,也又都能接受,在我們看來也不是蠢的,蠢得是那些選了最難的,再想做到最好,無法達成又滿心失落的人。從結果上看,和正確的,或者說最好的那個答案背道而馳。這其實就是貪婪算法告訴我們的。小時候什麼都要,往往很多都要不成。長大之後我們要的越來越少,常常才能得到自我的滿足。放棄眼前的最好,追求長遠的最好,亦或者避開最不好,都是一種本事,可能我們要花上一輩子來追求,一輩子都未必能追求到。追求到了,又未必能看到。可笑我們也許一直追求著要當局外人,下好自己這盤人生,卻無法意識到自己也是越陷越深的局中人,是他人局中的一顆黑白棋子。又能夠有多少人,能夠跳出去,能說自己是局外人呢?努力著用自己所謂的意識不斷地前行,可卻是別人手下的,細節的完成者,是別人的意識裡屬於細節的一部分,與大局關係不大,始終被更加聰明的人反制,最後不得不模仿,借鑑,再似真似假地提升,大多數人的大半輩子,我應該也不會例外,不過會是如此罷了。

每每想到此,總覺得恐怖。若每人都和我一樣是翻不出浪花的魚兒,我便也不會在意我的世界多麼渺小,我仍然會自得於自己的些許聰明,能夠有明天的吃食。只有當看到巨鯨捲起浪花,而自己也被掀得高高的時候,才深感無力。都說網際網路拉進了人們的距離,我覺得有時候卻是把那道溝壑用力地扯開,扯成一道深淵,放在了你的面前。因為有了輕易接觸到任何人的途徑,才會意識到自己沒有洋洋得意的資本。在失敗之後才有了的意識,自然是弱了一籌。

但話說回來,能夠失敗一兩次就具有意識,很快痛定思痛,那肯定也是很智慧的,我等凡夫俗子的目標,不過是如此罷了。

2020.4.8

相關焦點

  • 【算法資源】貪婪算法
    貪婪算法(Greedy algorithm)是一種對某些求最優解問題的更簡單、更迅速的設計技術。
  • 玩轉算法「基礎篇」| 貪婪算法
    2.1  適用場景貪婪算法常用於尋求最優解問題。將問題分成若干個求解步驟,在每個步驟中都依據某個最優原則選擇當前狀態的最優解,以此希望最後得到的結果也是最優的。貪婪算法在迭代完一輪之後就不再進行回溯,簡單高效,這種只關注當前狀態最優解的方法,通常可能會錯過全局最優解。
  • (十八) -- 從貪婪算法和動態規劃說起
    增強學習的最終目的,就是在和外界環境的接觸/探索/觀察的過程中,不斷改進策略,把長期的回報/利益最大化而已.        (2)增強學習的理論基礎, 要從運籌學裡的"貪婪算法" (Greedy Algorithm) 說起.
  • 貪心算法與近似算法
    貪婪算法很簡單:每步都採取最優的做法。在這個示例中,你每次都選擇結束最早的課。用專業術語說,就是你每步都選擇局部最優解,最終得到的就是全局最優解。信不信由你,對於這個調度問題,上述簡單算法找到的就是最優解!顯然,貪婪算法並非在任何情況下都行之有效,但它易於實現!下面再來看一個例子。
  • 程序算法與人生選擇
    比如,你的標準是:工資大於5000元&&業務前景長於3年的公司,你可以用這個標準來過濾你的選項。然後,你可以再調整這個標準再繼續遞歸下去。這個算法告訴我們,我們的選擇標準越清晰,我們就越容易做出選擇。這是排序算法中最經典的兩個算法了,面試必考。相信你已爛熟於心中了。所以,我覺得你把這個算法應用於你的人生選擇也應該不是什麼問題。關
  • XGBoost之切分點算法
    前言上文介紹了XGBoost的算法原理並引出了衡量樹結構好壞的打分函數(目標函數),根據特徵切分點前後的打分函數選擇最佳切分點,但並未對節點的切分算法作詳細的介紹。本文詳細的介紹了XGBoost的切分點算法,內容參考陳天奇博士《XGBoost :A scalable Tree Boosting System》。
  • 你不得不看的最重要的算法類型
    算法: 算法是解決問題的分步過程。一個好的算法應該在時間和空間上進行優化。不同類型的問題需要以最優化的方式解決不同類型的算法技術。世界上有很多類型的算法,但是本文將討論您必須知道的最重要和最基本的算法。
  • 一個數據挖掘大牛,用程序算法做人生選擇
    貪婪算法所謂貪婪算法,是一種在每一步選擇中都採取在當前狀態下最好或最優(即最有利)的選擇(注意:是當前狀態下),從而希望導致結果是最好或最優的算法。貪婪算法最經典的一個例子就是哈夫曼編碼。對於人類來說,一般人在行為處事的時候都會使用到貪婪算法,比如在找零錢的時候,如果要找補36元,我們一般會按這樣的順序找錢:20元,10元,5元,1元。或者我們在過十字路口的時候,要從到對角線的那個街區時,我們也會使用貪婪算法——哪邊的綠燈先亮了我們就先過到那邊去,然後再轉身90度等紅燈再過街。這樣的例子有很多。
  • AI人工智慧的幾種常用算法概念
    PSO 算法屬於進化算法的一種,和遺傳算法相似,它也是從隨機解出發,通過迭代尋找最優解,它也是通過適應度來評價解的品質,但它比遺傳算法規則更為簡單,它沒有遺傳算法的交叉(Crossover) 和變異(Mutation) 操作,它通過追隨當前搜索到的最優值來尋找全局最優。這種算法以其實現容易、精度高、收斂快等優點引起了學術界的重視,並且在解決實際問題中展示了其優越性。
  • 示例說明算法和流程圖
    在此頁面中,我們將討論算法和流程圖之間的差異,以及如何創建流程圖以直觀地說明算法。       算法和流程圖是用於創建新程序(尤其是在計算機編程中)的兩種不同工具。算法是對過程的逐步分析,而流程圖以圖形方式解釋了程序的步驟。
  • 決策樹分類算法之ID3算法與C4.5算法
    分類作為一種監督學習方法,要求必須事先明確知道各個類別的信息,並且斷言所有待分類項都有一個類別與之對應。但是很多時候上述條件得不到滿足,尤其是在處理海量數據的時候,如果通過預處理使得數據滿足分類算法的要求,則代價非常大,這時候可以考慮使用聚類算法。
  • 叮~一份貪婪算法講解請您籤收!
    = father[a]) {              int z = a;              a = father[a];              father[z] = x;       }       return x;}/*Kruskal算法求無向圖的最小生成樹*/int
  • 蒙特卡洛算法(MC)
    公式3-3證明我們取當前策略的貪婪策略是滿足策略提升定理的。根據當前軌跡通過first-visit的方式採樣回報,通過平均值回報的方式估計動作值函數根據當前估計的動作值函數進行策略提升,即貪婪策略循環進行5、6、7在第三小節中,我們並沒有解決探索性開端的問題。
  • 「別人恐懼我貪婪,別人貪婪我恐懼」人性的選擇!
    股神巴菲特說過「別人恐懼我貪婪,別人貪婪我恐懼」這句投資格言一直被支持者奉為經典。說白了就是人性,這東西一萬年都不會變,在股市體現得更淋漓盡致。「別人恐懼的時候貪婪,別人貪婪的時候恐懼」,這句話終究還是在琢磨市場,琢磨別人,琢磨交易時機,也就是擇時。我們不要誤解巴菲特意思,理解市場、尋找價值。貪婪和恐懼其實面對的是價值高估和價值低估兩個關鍵時間點。別人都恐懼的時候,股價往往都很便宜了;別人都貪婪的時候,股價往往都很貴了。老巴想表達的應該是這個,按這個來買賣股票,確實有擇時的嫌疑。
  • 人工智慧-啟發式算法(Heuristic Algorithm)簡談
    求解要選擇算法,只有我們對各種算法的優缺點都很熟悉後才能根據實際問題選出有效的算法。但是對各種算法都了如指掌是不現實的,但多知道一些,會使你的選擇集更大,找出最好算法的概率越大。大自然是神奇的,它造就了很多巧妙的手段和運行機制。受大自然的啟發,人們從大自然的運行規律中找到了許多解決實際問題的方法。
  • 偽逆學習算法教程 (上)
    以上是PIL算法的基本思想,在NC論文中還討論了PIL算法的幾個性質,網絡結構變化以及算法加速以及應用等。對深度網絡而言,直接採用梯度下降算法訓練,在當時的算力下是不可能的。因此Hinton教授提出了深度學習的核心方法:逐層貪婪學習加微調,用這種方法解決了梯度彌散和局部極值的問題。這實際上是分而治之的思想的應用,將一個深度網絡按層分解,每層採用無監督學習方式來訓練,最後對深度網絡的權重參數用梯度下降算法再微調一下以達到期望的訓練誤差。深度信念網絡DBN是多個RBM堆疊,在最後加上一個分類器構成的。
  • 算法是什麼:計算機領域中算法的科普
    所有這些都要感謝算法。每當你使用手機、計算機、筆記本電腦或計算器時,其實都在使用算法。那麼,什麼是算法?如果你想做數學運算,比如說兩個數字相乘(不使用任何電子設備),那麼你需要在紙上做乘法。你按照一定的規則獲得正確的答案。你也可以使用耗時更少的方法來做計算。這就是算法。算法是為執行特定的任務而設計的一組指令。
  • 各種強化學習算法介紹
    那麼環境是指代理正在作用的對象(例如Atari遊戲中的遊戲本身),而代理代表RL算法。環境首先向代理髮送一個狀態,然後基於其知識來採取行動來響應該狀態。之後,環境發送一對下一個狀態並獎勵給代理。代理人將用環境所回報的獎勵來更新其知識,以評估其最後的行動。循環一直持續,直到環境發送一個終止狀態,終止於情節。大多數RL算法都遵循這種模式。
  • MATLAB數學建模(十一) | 人工蜂群算法(附MATLAB代碼)
    新來的小夥伴可在公眾號後臺回復 代碼,即可提取一整套高質量智能優化算法的MATLAB代碼。https://www.bilibili.com/video/BV1Ka4y1H7r7後臺有很多小夥伴留言說想學習一下人工蜂群算法(artificial bee colony,ABC),所以今天我們為各位講解ABC,讓各位小夥伴能夠快速掌握這種算法。
  • 小白帶你學---貪心算法
    貪心算法(Greedy Algorithm) 簡介貪心算法,又名貪婪法,是尋找最優解問題的常用方法,這種方法模式一般將求解過程分成