AI時代下,生物學家和程式設計師為何不會被取代?

AI時代下,生物學家和程式設計師為何不會被取代?

更新於 發佈於 閱讀時間約 13 分鐘

做為一個在生物資訊領域剛起步的新人,我常常在網路上留意各種跟人工智慧有關的資訊;有天我在網路上看到了這一篇:
Bill Gates on AI's future: These 3 professions are safe—for now

這些內容也有被臺灣的媒體翻譯出來:
比爾蓋茲:10年內 多數事都不再需要人類

裡面提及了微軟共同創辦人比爾蓋茲(Bill Gates)認為在AI革命下,目前可能還會倖存的幾種職業:程式(尤其跟 AI 相關的)設計師、能源專家、生物學家。其中「程式設計師」跟「生物學家」這兩者,看了之後真的讓我覺得心有戚戚焉,也讓我回想起在大學的時候做專題,跟 AI 互動的一些小經驗。以下就這兩種職業為何能夠生存的原因,來跟大家做分享。

生物學家為何目前可能倖存

先來說說比爾蓋茲的看法;他表示醫學研究跟科學發現,都需要具備(或依賴)創造力、直覺、批判性思考,而這些事情都是目前人工智慧仍然難以比擬的能力。也因為人工智慧目前還缺乏這些能力,那它做的研究可能不具新穎性、做的假設也不具突破性。

因為我以前曾經為了大學的專題,也需要自己找出研究方向,這句話勾勒起了當年讓我印象非常深刻的一些往事。

AI 無法取代生物學家的原因一:對研究主題的想像與創造力

我曾經加入以硼中子捕獲治療為主題的實驗室。這項療法結合了含硼藥物的設計、運輸、癌細胞對於含硼物質的吸收、中子束的來源與運用等不同的領域,因此可以從許多不同的角度探索;比如從癌症生物學切入,探討在這項治療後,癌細胞內的DNA可能發生什麼樣的修復來「抵抗」這項療法、我們可以如何結合其他反應途徑,例如鐵死亡(Ferroptosis)來加強這項療法的效用,或者是從設計硼藥物的角度切入,討論第三代硼藥物(相對於現在普遍使用的第二代硼藥物)如何更容易地被細胞吸收等。

以前我在自己讀論文,要找出一個屬於自己的研究方向的時候,曾經誤以為這項工作也可以交由人工智慧協助;卻忘記人工智慧即使是在搜尋網路的前提下,用來回答我的資料仍然是以前就有的東西。換言之,要它從已知的內容來「創造」新的研究方向,就算真的它會生成內容,那也不會是具有重要性的。

結果可想而知,我用人工智慧弄出來的研究方向報告,當然是被指導老師指出之前已經有人做過,因此被退回重寫。最後我第一次被老師贊同的研究方向報告,素材也不是依賴人工智慧,而是我自己去京都基因與基因組百科全書(Kyoto Encyclopedia of Genes and Genomes, KEGG)的網站上找到,可能有潛力專一性地對抗三陰性乳癌(Triple-Negative Breast cancer, TNBC)的一個基因。

raw-image

AI 無法取代生物學家的原因二:跨領域思維與應用

後來,隨著老師觀察到我在生物資訊上的潛力,遠比單純做細胞實驗來得明顯,他就趁某次與實驗室成員討論的機會,跟我提示用程式做數學建模、預測癌細胞在接受不同放射治療的生存比率的可能性,並鼓勵我說:如果這個東西成功,那或許可以用在療效結果的預測上,協助到更多臨床上的病患。

如果這件工作交給人工智慧,它應該也不會想到能把「寫程式」跟「癌症治療」兩者結合,開闢出全新的一條領域吧?用簡單一點的話來說,這個「跨領域思考」的技能,是現在人工智慧可能還學不太會的;它或許可以在細胞實驗上,推薦幾個看起來不錯的大方向,但像是生物資訊這種需要結合資訊與生物知識的領域,它可以在個別的領域展現絕佳的效能,然而在將生物知識結合到程式碼中的過程,我們還有很大的優勢。

它當時在寫程式上面真的協助我不少,比方說優化我的程式碼,讓我的模擬可以跑得更快;但在我實作這個跨領域題目的時候,跟輻射生物學有關,而且最關鍵的參數調整,比如二次線性模型(註一)中的Alpha / beta 值,也是我根據我修讀原科院的課學到的知識,把程式碼的核心邏輯重新寫一遍,才有最終的成果,可以在推甄的時候展示。

小結:生物學家能倖存的原因

我們擁有的創造力、跨領域整合能力,AI 都還望塵莫及

綜上所述,我覺得比爾蓋茲並沒有看輕生物學家在AI 的浪潮之下的潛力,反而是看見了我們在研究主題上發想、創造、直覺等能力;然而我認為跨領域整合與應用的能力,如果做為生物學家的我們能夠善用,那麼距離完全被AI取代的時間,應該會再延長更久。

程式設計師為何目前可能倖存

同樣先說說比爾蓋茲的看法:他認為現在的人工智慧在生成程式碼這塊,已經有很高的精準度,可是在創造複雜軟體上所需要的精確性,以及解決問題的能力,仍然需要人類的除錯、改進、推進AI本身的能力。

不過我認為:最關鍵的因素,還是人類最瞭解人類的需求,因此有發現問題來設計程式的能力;以及人類對於某些問題的直覺,也是AI到目前為止無法企及的。

AI 無法取代程式設計師的原因一:對於程式碼的除錯

首先,跟大家分享一題我在LeetCode(註二)上練習的SQL資料庫題目:

1661 -> Average Time of Process per Machine

題目的目的,是要我在表格中擷取出必要的資訊(執行開始、結束時間)並計算平均,然後輸出到另一張表格中。以下是我第一次嘗試的解答版本:

# Write your MySQL query statement below
With Pro_start as (
    Select machine_id, process_id, MIN(timestamp) as start_time
    From Activity
    Where activity_type = "start"
    Group by machine_id, process_id
),
Pro_end as (
    Select machine_id, process_id, MAX(timestamp) as end_time
    From Activity
    Where activity_type = "end"
    Group by machine_id, process_id
)
Select P1.machine_id, round(sum((P2.end_time - P1.start_time)), 3) as processing_time
From Pro_start as P1
Join Pro_end as P2
On P1.machine_id = P2.machine_id and P1.process_id = P2.process_id
Group by P1.machine_id
Order by P1.machine_id;

但是這段程式碼本身有一個邏輯上的錯誤:它使用sum()把執行時間「加總」了,並不是題目要求的「取平均值」,於是每次求出來,答案都會變成兩倍。

raw-image
raw-image

那時候我解題目一直解不出來,又不想直接看別人的解答,於是我去問了ChatGPT。它當時的確有嘗試協助我,不過它的解法一直圍繞在paired的使用與否,如下:

# Write your MySQL query statement below
With Pro_start as (
    Select *,
    ROW_NUMBER() OVER (PARTITION BY machine_id, process_id ORDER BY timestamp) AS rn
    From Activity
    Where activity_type = "start"
),
Pro_end as (
    Select *,
    ROW_NUMBER() OVER (PARTITION BY machine_id, process_id ORDER BY timestamp) AS rn
    From Activity
    Where activity_type = "end"
),
paired AS (
    SELECT 
        s.machine_id,
        s.process_id,
        s.timestamp AS start_time,
        e.timestamp AS end_time
    FROM Pro_start as s
    JOIN Pro_end as e
      ON s.machine_id = e.machine_id 
     AND s.process_id = e.process_id 
     AND s.rn = e.rn
)
Select machine_id, round(sum((end_time - start_time)), 3) as processing_time
From paired
Group by machine_id
Order by machine_id;

不過套用這段程式碼之後,答案一樣是預期的兩倍。理由也一樣:錯用了sum()函數來加總,不是取平均。

最後我在網路上找到了avg()函數來求平均,然後修改成如下:

# Write your MySQL query statement below
With Pro_start as (
    Select machine_id, process_id, MIN(timestamp) as start_time
    From Activity
    Where activity_type = "start"
    Group by machine_id, process_id
),
Pro_end as (
    Select machine_id, process_id, MAX(timestamp) as end_time
    From Activity
    Where activity_type = "end"
    Group by machine_id, process_id
)
Select P1.machine_id, round(avg((P2.end_time - P1.start_time)), 3) as processing_time
From Pro_start as P1
Join Pro_end as P2
On P1.machine_id = P2.machine_id and P1.process_id = P2.process_id
Group by P1.machine_id
Order by P1.machine_id;

這次終於,它答對了。

後來從其他同行的經驗,我才理解原來人工智慧會預設你的程式碼邏輯正確,因此你要它來修正程式碼,它可能最多就是讓它不要報告錯誤;然而像上述那種邏輯錯誤,就還是需要人類來查證,因此,程式設計師在現在仍有一定需求。

AI 無法取代程式設計師的原因二:對於實際需求的察覺

就在我決定撰寫這篇文章的同時,我意外從我的追蹤名單裡發現這篇很有趣的實作:

[side project] 今天吃什麼?

這位筆者他發現「每天吃什麼」似乎是讓很多人思考很久的議題,於是為了解決這個煩人的問題,他設計出了類似交友軟體的介面,讓使用者能選擇喜歡的餐廳。

中間的設計過程,在那篇文章都有,在此不另贅述;但是「今天要吃什麼」這個問題,以及對問題解法的實際需求,都是我們人類可以想像得到,但AI無法想像的。既然我們可以根據需求來發想程式,但AI不行,那麼我們在這個方面,就仍然不可取代,也就還能在AI浪潮之下生存。

小結:程式設計師能倖存的原因

我們在程式邏輯的完善、實際需求的察覺,仍有不可取代性。

做個小結論:我覺得比爾蓋茲他雖然著重在「完善人工智慧」仍然需要人類,但是我認為在「需求察覺」這塊,程式設計師的優勢也不可小覷。

需求為發明之母,如果我們仍然能有對問題的察覺、對需求的發想,那麼作為程式設計師,被取代的時間就比其他職業要來得久。

結語:人類的優勢是創造力與想像力

自古以來,我們就常常把重複性質高的工作,交給其他的實體或機器來處理;例如將生產糧食的重複工作,從人力轉為獸力再到耕耘機;編織衣物的重複工作,從手工編織到人力或蒸氣動力的紡織機的出現。只是現在,知識的傳授、學習可能也是重複性質很高的工作,我們交給電腦跟人工智慧來處理而已。在我的想法,人類相對於這些會做重複工作的機器相比,有的就是創造讓生活更好的創造力,以及如何實現這目標的想像力。因此,在AI浪潮的席捲之下,我們更應該利用我們有的優勢,來與AI 這個協助我們做重複性質工作的工具並存,而不是一直擔心會被取代的問題。

如果各位喜歡這個文章觀後感的內容,記得點選喜歡;每一個喜歡,都是我的動力。

附註

註一:二次線性模型(Linear Quadratic model):描述輻射劑量和細胞存活比率的關係,所述的Alpha值是雙股DNA受到同一個電子或自由基而被破壞的機率,beta值則為雙股DNA受到不同電子或自由基而被破壞的機率。其比例可以影響模型的預測結果。

註二:LeetCode,是線上的一個平台,旨在提供編碼面試準備的題目,供用戶練習編碼或算法問題。內有許多不同程式語言,例如Python、Javascript等題型。

avatar-img
生資知識的道場
5會員
10內容數
歡迎來到【生資道場】! 這裡是一個結合生物資訊與生活思維的小宇宙。 我們聊癌症、談程式碼,也偶爾思考世界的複雜與美感。 不一定要懂程式、不一定要是科研人, 只要你對知識、生活與實驗感興趣,就能自在入座。 歡迎留言交流,理性討論,偶爾隨著道場主一起激盪新想法。
留言
avatar-img
留言分享你的想法!
本篇參與的主題活動
隨著夏天的腳步逼近,是不是也感覺到空氣中那股濕熱的黏膩感了呢?這種天氣下,如果還噴上秋冬常用的濃郁木質調或甜膩美食調香水,不只自己覺得悶,旁人可能也會有點「窒息」感。夏天,我們需要的是能帶來清爽、愉悅感受,彷彿一陣微風拂過的「降溫系」香氣! 但是,什麼樣的香水才適合夏天?
隨著夏天的腳步逼近,是不是也感覺到空氣中那股濕熱的黏膩感了呢?這種天氣下,如果還噴上秋冬常用的濃郁木質調或甜膩美食調香水,不只自己覺得悶,旁人可能也會有點「窒息」感。夏天,我們需要的是能帶來清爽、愉悅感受,彷彿一陣微風拂過的「降溫系」香氣! 但是,什麼樣的香水才適合夏天?