這幾天看了幾本與演算法相關的書籍,有了寫篇文章的想法,覺得編碼歸根結底就是一門問問題的藝術,
計算機的思維和人類的思維

很多年以前,看到能使用電腦玩游戲、播放視頻 、音樂……感覺神奇的很,后來學習編程后,在撰寫程式時,才發現編碼就是一個不停發送詢問指令的程序,還發現沒有 if 語法幾乎是寸步難行,原來計算機也沒有想象中的那么聰明,除了會些基本運算,最歷害不過的就是會點頭和搖頭,
編程的本質上就站在人的思維角度去遷就計算機的思維,因為人的思維相比較計算機思維幾乎是降維大擊,
先來一個簡單例子:如有 1,2 ,3,4 ,5幾個數字,請問那兩個數字相加等于 5,
如果問的是一個人類,人的思維是學習性思維也是經驗性思維,能快速的找出 1 和 4,2 和 3,
原因在于人類在思考某一個問題的時候,是可以憑借曾經的學習經歷,用問題匹配經驗記憶,這是一個數學問題去找到數字相關的經驗,然后得出最終的答案,一切得益于記憶存盤和記憶查找,
如果讓計算機回答這個問題,則問問題的方式就要發生改變,不能直接問它,嘿!計算機,你知道 1,2,3,4,5 中哪 2 個數字相加等于 5嗎?,它會一臉懵逼,
你要輕言細語地這樣問它:嘿,1+2 等于5嗎?這個它可以告訴你不是;然后再問它 1+3 等于5嗎?它會說不是的;再問它 1+4 等于 5 嗎,它會點頭…… 然后依次類推,最后計算機會給你所有答案,
所以,你會發現,要計算機給你答案可真夠累的,這計算機也忒笨,感覺就只會比較似的,用戶也只能通過它的比較結果自己根據結論做什么事情,
是的,計算機的思維本質就是如此,它也就只會搖頭或點頭,
所以,你需要計算機解決某個實際問題的時候,你需要不停的試探型的問,讓它不停的比較,再通過比較得到某些結論,這就是計算機的窮舉思維,
所以,問問題的方式也就撰寫代碼的方式就很有講究,問的方式不對,可能就問不出結果 ,
問的方式可以,可能需要很長時候給你結果,
如果問的方式很好,就有可能很快告訴你答案,這就是所謂的演算法設計,用一種非常藝術的方式問計算機,通過它的點頭或搖頭快速得到結果,
村頭晃悠的傻大個
歸納其來是不是有點象問村頭的傻大個問題一樣,
有天我家狗丟了,我去問天天在村頭晃悠的傻大個:
如果你這么問他:你看到我家狗了嗎?他會搖頭,傻大個即使看到過我家的狗,但他人傻,記憶是混亂的,所以他搖頭了,沒有問出結果,所以說問問題的方式有問題,
如果你這么問他:你看到一只狗了嗎?他點頭,說明確實有一只狗從他身邊經過,
你再問他,是黑色(我家的狗是黑色)的嗎?他點頭,雖然我得到了結論,有一只黑色的狗從他身邊經過,但我不能馬上得到結論一定是我家的,所以需要繼續問,
這只狗是不是大概 2 歲的樣子?這時,他就懵逼了,因為這個問題對他來講太深奧了,他怎么能區分一只狗究竟是幾歲了,他沒有對于狗的年齡判斷的知識庫,他是一個傻大個呀,
如果你這么問他:你看到一只狗了嗎?他點頭,說明確實有一只狗從他身邊經過,
你再問他,是黑色(我家的狗是黑色)的嗎?他點頭,雖然我得到了結論,有一只黑色的狗從他身邊經過,但我不能馬上得到結論一定是我家的,所以我需要繼續問,
小狗會對你搖尾巴,還要添你的手(我家的狗較熱情,碰到人就這樣),是的嗎?傻大個點頭,到此,我應該差不多問到了我要問的問題答案,
所以,面對傻大個時,問問題的方式是很重要的,當然,應該也能發現,問問題時,找到問題的特征描述是很重要的,問問題時,用正確的特征描述去匹配傻大頭的認知世界,就能得到答案,
現在,應該能理解前面所說的:編程的本質上就站在人的思維角度去遷就計算機的思維,因為人的思維相比較計算機思維幾乎是降維大擊,
人工智能的關鍵:知識庫和經驗模型

計算機為什么不能如正常人類的思考方式思考,而感覺就像傻大頭,
分析結論,發現計算機沒有知識庫,你看,我們從小就學習這樣那樣的知識,隨著年齡的增長,關腦中的知識庫越來越多,當你問我問題時,只要能在知識庫找到的答案我就能給你答案,
當然,我們會有想法,把所有現實世界中的知識存盤在電腦中不就可以嗎?這就如同給你買很多書,放在桌面,我問你問題時,你是否能馬上給我答案,不能,但是你可能通過翻閱相關知識書籍給我答案,所以,如果直接把知識庫保存在計算機,計算機也只能通過查詢的方式進行一一匹配,這很顯然,依然還是窮舉思維,而不是主觀性思維,窮舉思維面對大量的知識庫查詢時,就會變得非常慢,
所以除了知識庫之外,還應該有經驗性思維,也就是經歷性記憶,才能從知識庫中快速找到答案,我們學知識的時候,都會使用知識,如此建立起經歷性記憶,
現代計算機中所謂的人工智能,其本質就是為計算機提供大量的知識庫,然后讓計算機如同人類的方式不停自主學習知識庫,然后積累起經驗模型(專業叫特征模型),當你再次問計算機的時候,他就能通過學習好的經驗模式給你答案,當然,最重要的是如何讓計算機學習,這便是所謂的人工智能演算法,
最后陳詞
好的演算法,是較復雜的,這不亞于是要給電腦徹底洗腦,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/424937.html
標籤:其他
上一篇:drawio畫圖軟體使用入門
下一篇:差分與前綴和
