數量龐大的沙丁魚群是如何做到動作整齊劃一的?
在看紀錄片的時候,經常看見海洋里的數以萬記的沙丁魚群動作整齊劃一的打轉,遇到危險時能很快分開又整合,簡直驚呆了,它們到底是怎麼做到的?
-----本題已收錄至知乎圓桌 ? 潛入蔚藍,更多關於海洋的話題歡迎關注討論。
謝謝匿名用戶神秘的邀請……
有空時我再補充一些有關的東西,下面的兩篇專欄是討論有關的問題的:- 鳥群的統計物理(1):模型與模擬
- 鳥群的統計物理(2):臨界和群體中的長程關聯
其實我在專欄文章的(2)中有提過魚群運動數據的分析,從這一分析可以看出來其運動的特徵是( 參見 Herbert-Read, J. E., Perna, A., Mann, R. P., Schaerf, T. M., Sumpter, D. J., Ward, A. J. (2011). Inferring the rules of interaction of shoaling fish.Proceedings of the National Academy of Sciences, 108(46), 18726-18731.):
當然,除此之外,用類似 Boids 模型或者 Vicsek 模型的類似方法應該也是可以實現的,具體地分辨應該會需要更精細的實驗(例如測量加速度關聯等等)才能驗證。
另一種可能就是群體中存在著信息傳遞和「民主機制」,關於與此有關的一些討論還可以參考我的鹽系列電子書《臨界:智能的設計原則》(點擊查看目錄和內容提要)。下面即為從書中節選的關於「民主機制」的實驗的討論。
在一個層級化的結構中,顯然「領導」的決策會顯得非常重要,但如果這些領導「與群眾的意見相脫離」,群體是否可以有民主的機制去對沖這種錯誤決策所造成的危害呢?在動物的集體行為中,當「一小撮」人的行為極其執拗時,少數個體的選擇和偏好可能會成為集體的選擇,如果雙方意見勢均力敵時,那麼通常集體的選擇會與多數個體的選擇一致。然而更有意思的是,Iain Couzin 等人的研究 [1] 表明,往團隊裡面加入更多「不明真相」的群眾,可以抵消「一小撮」人的決策,這是非常反直覺的結論,因為通常我們會認為不明真相的群眾更容易被一小撮人的行為所影響,但他們的金體美鯿( Notemigonus crysoleucas )實驗結果表明,更多的「不明真相」的群眾(未經訓練的魚)會導致群體選擇傾向於更「民主」,即集體的最終選擇會傾向於與絕大多數魚一致。這一實驗的結果暗示我們「聽周圍鄰居的」這種策略在魚群的行為中仍然佔據了主導,少數個體的選擇並不總能天然地成為「領導」的決策。
[1] 參見:Couzin, I. D., Ioannou, C. C., Demirel, G., Gross, T., Torney, C. J., Hartnett, A., ... Leonard, N. E. (2011). Uninformed individuals promote democratic consensus in animal groups. science, 334(6062), 1578-1580. 關於這一研究的科普文章可以參考:「民主」或許源於無知
感覺現在高票的幾個答案都不完備,簡單補充一下。
首先這種現象的學名應該叫flocking,不知道為什麼其他答案沒有提到。
去年做了一個互動裝置就是關於模擬這個flocking的運動的。
作品在台北的中信銀行headquarter的lobby 視頻在此:
中國信託銀行——生聲不息(可能要翻牆)
後來在大阪的opening ceremony旗艦店也用了同樣的演算法做了一個類似的但是更抽象的互動裝置。
雖然是用計算機模擬出來的演算法,但是最後的效果十分逼真。
演算法中用到了一個很關鍵的基本假設:魚對相對距離的感受。
假設每兩條魚之間的距離有三個層級:
i 當兩條魚的距離在範圍1之內的時候,兩條魚會像相反的方向遊動(repel);
ii 當兩條魚的距離在範圍2的時候,兩條魚會趨向像相同的方向遊動(align);
iii 當兩條魚的距離在範圍3的時候,兩條魚會逐漸相互靠近;
當然距離超過範圍3的話就沒影響了。
基本通過這三條可以模擬出一般魚群的flocking演算法。
(實際裝置大概這樣)
但時候後來發現這種運動相對隨機,不能完美的模擬超大規模的魚群。為了解決這個問題,我後來引入了一個leadership 的參數,就是說給每條魚賦予一個領導力的數值,數值高的話對於其他魚有更強的影響,數值低的影響力就弱。引入之後發現領導力高的魚會自動的變成魚群的首領(游在每一個組最前面的)。
當時做這個作品的時候也查了很多相關的資料,但是好像沒有看到現在高票答案提到的那一篇。。。可能是查找的關鍵詞不一樣。倒是記得有一篇提到說應該是離一條魚最近的6條魚(視野內)會對他產生影響,但是這個最後沒有在演算法中得到體現所以沒有去驗證。
而且在沒有引入leadership的情況的時候真的和最後的模擬效果差的挺多的,所以也姑且對高票答案提到的民主思想提出一定懷疑。
關於魚類(或者其他一些同樣有flocking習性的鳥類)這種現象的原因,我記得看過兩個假設:
1)在遇到更大的predator的時候,這種習性會讓整個魚群看起來像更大的一條魚,從而嚇退捕食者;
2)這些魚都是膽小鬼 :)所以要拚命躲到前面魚的後面。
但是原因和當時要做的裝置沒太大關係所以也不記得論文的出處了。。。
robert hodgin (flight404)做的一個模擬的裝置 專門模擬了這種tornato的魚群效果,視頻:
Fish Tornado, revisited on Vimeo
Boil up, bait ball simulation software for the Auckland Museum on Vimeo
不知道他做的具體演算法是怎樣。。。但是感覺應該最基礎的那三條假設是不會變的
其實他們是有內心戲的
沙丁魚a:「如果你不想被做成魚罐頭,就跟我左右右手一個慢動作」
沙丁魚們:「嚶嚶嚶.....好噠」
無數個個體自主選擇後的結果,他們的自主選擇結果都是一樣的:選擇與其它同類相同的距離和方向.每條魚就像一個個小分子,分子之間保持著固定距離,既有引力也有斥力。
魚群的方向由最外圍的魚來決定,如果一側有危險那麼他就會閃躲,其它魚也隨著它信號魚挪移。
群體裡面的魚只負責跟隨。如果有魚不聽話遊離在群體之外就會被捕食者吃點,所以經過長期的自然選擇剩下的都是現在這些聽話的。
另外,如果看過《進擊的巨人》,調查團牆外巡邏時候的陣形也是這個原理吧。謝邀!最近為嘛會突然有人邀我。。。
這是我這個方向的第一邀,我本來準備好好寫寫的,看了 @傅渥成 大大如此詳實的介紹,有點話都被說盡了的感覺。我就簡單說一下好了,以後有時間了再增加內容。【覺得不會答題,大家提意見我再修改】
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~以下正文~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
不管是魚群還是羊群、鳥群,都會存在這種情形。我主要從傅大提到過的Boids(群伴)模型來通俗的說說。數量眾多的魚群千變萬化的遊動姿態,一般都可以分解為以下幾個規則:
● 防撞:諸群伴在共同遊動時保持一定距離,避免因擁擠而相互碰撞。
● 模仿:為了列隊遊行,群伴模仿著它附近的同伴的平均速度與方向。
● 聚中:儘可能向群體中心運動,結果是群體外部暴露最小。
● 視野:從妨礙視野的群伴中移開一點,以便儘可能看到其他群體。
這四個原則中,防撞是最根本的,模仿其他魚的速度矢量遊行也可以達到防撞的效果。聚中是進化的結果,在外圈總是更容易被捕食。視野是其他原則的保證。這四個原則互相又有一定的矛盾,要聚中,就可能發生碰撞。每個原則所決定的每個群伴的速度矢量的權重是不一樣的,一般是防撞>聚中>模仿>視野。
群伴會根據這四個原則自發地展示出複雜的高層次結構和行為。因為防撞和聚中的權重一般較大,所以魚群傾向於形成越來越大的群體,運動形態會更加的千奇百怪,變化多端。
因為那一大群沙丁魚已經不是很多沙丁魚的簡單組合了,而是一個完整的生命體。
參考凱文凱利的書 [失控] 。作者認為,大量個體以某種方式組合在一起,會湧現出個體不具備的特質。比如神經元組合在一起便產生了智能和記憶,
要說那一大群沙丁魚為什麼那麼整齊的突然轉向,沙丁魚可能也不知道自己為什麼要怎麼做。想想高中時吵鬧的班級突然安靜的場景,是不是每個人都不明白髮生了什麼?很多「複雜」現象背後是簡單的規則。每隻沙丁魚都遵循了特定的規則,遵守規則的結果就是你所看到的現象。
這個現象還被應用到了人工智慧裡面,有一種演算法叫做「粒子群演算法」就是利用了這個原理。如果你可以親自實現一個這樣的演算法,會有更深刻的理解。滿足兩個條件就可以:
一,持續遊動不能停。
二,不能撞到別的魚。
頭魚前進,後續持續跟進。頭魚遇襲擊,調頭,二魚觸發第二條規則,調頭。波動瞬間傳播魚群,尾魚變頭魚。
尾魚遇襲,加速,觸碰前魚,前魚觸發第二條規則,也加速。波動瞬間傳播魚群。
執行第二條原則時,會產生更複雜的運行路線。於是我們看到魚捲風。非專業,個人認為就像嘈雜的教室突然安靜了一樣,集體的選擇
有個概念叫glocal control: local action, global purpose~
混沌理論
這個和群體效應有關,單只只是趨利避害,但每一隻都會根據前面一隻的行為作出下一步動作的決定,最終導致群體行為的產生。換而言之,並不是每隻都看到了危險,然後決定轉向,而是一隻或幾隻遇到危險,然後後面的部隊跟隨作出反應。
同樣神奇的有蟻群效應,蜂群等。
在《失控》有提到
以人的視角來看,他們是整齊的,可要是以魚的視角來看呢?
推薦閱讀: