Author name: 楊慶忠

基本觀念之1~變數與資料型態

1-1:變數與資料型態 Python的變數,和國中時候學過的未知數X、Y、Z,有些類似,但又差異甚大。未知數的值從頭到尾都是固定的,計算過程只是在求解唯一的答案;但變數(variable)的值卻是可改變的,從程式一開始、到程式中段、到程式結尾,都可以因為運算處理,而改變其所代表的值。 所以一個變數有兩個含意,一個是變數名稱,另一個是變數值。例如num=100,表示其變數名稱為num,而其變數值為100,等號”=”在這裡,有指定、賦予變數值的意思。 我們可以用一個箱子表面貼的標籤來表示變數名稱,放進箱子裡面的資料為變數值。變數名稱是維持固定的,但放進箱子的變數值,卻可隨程式的執行而改變,如下圖所示: 我們將上面num=200的例子再延伸。在代數式的運算中,x=x+100是不合理的,因為等號左右的x消掉後,會得到0=100;但在程式設計中,類似num=num+100的運算,卻常常會出現。 因為在等號(=)右邊的num,代表變數值200,它和100相加得到300,然後再把300指定給左邊自己的變數名稱num,從而取代了舊值200。 這個過程,我們用程式碼和示意圖來表示: 我們還記得變數有兩個含意,在此謹記著,出現在等號左手邊的,代表變數名稱;出現在等號右手邊的,代表變數值。 變數的名稱,和往後會介紹的函式名稱、類別名稱,都稱為識別字(identifier),顧名思義,就是一看到名稱,大概就能猜測到它被賦予的資料性質。例如name代表姓名(字串,str),age代表年紀(整數,int),average代表平均值(浮點數,float)。所以在變數命名上,應該使用有意義的英文名稱。 除此之外,還有一些命名的規則要遵循。例如,名稱的字首,最好用小寫或大寫的英文字母,不可以是數字,如5name;不可使用程式或系統的指令(關鍵字/保留字),例如像print,if、else,class等。 如果需要使用到兩個以上英文字來命名,字間用底線隔開不要有空格,例如bool_for_comparison=100>200,代表bool(布林)資料型態的變數值,是來自比較運算100>200後的結果,執行print(bool_for_comparison),會得到布林資料型態中的False值。

基本觀念之1~變數與資料型態 Read More »

基本觀念

第一章:基本觀念 工欲善其事必先利其器,想學好Python的第一步,當然就是要趕快把軟體準備好。對初學者而言,最好先熟悉Anaconda整合環境之後,再進入Google雲端硬碟,免費運用其Colab限量GPU。 Anaconda是以Spyder編輯頁面為開發環境,內建有常用的套件模組,供編譯執行Python時匯入連結之用。它有多種版本可選擇,學員可從下列藍色字體的網站,點選下載檔案較小且穩定的版本,在此推薦Anaconda3-2023.07-1-Windows-x86_64.exe,將其存至桌機或筆電的資料夾: https://repo.anaconda.com/archive/ 請用滑鼠左鍵雙擊下載的執行檔進行安裝,過程中大部份只要下一步、下一步(next)就可以。完成後從開始功能表展開Anaconda3資料夾,可以看到Spyder的蜘蛛網圖示,點選開啟它,過程中看到的無作用小視窗一律關掉,最後可以看到下列編輯環境: 預設的版面,左半部是程式編輯欄位(Editor);右半部的下方是執行輸出欄位(IPython Console),其上方是多個視窗疊在一起,我習慣將其上方所有視窗都關掉(Close),讓執行輸出視窗佔滿右半部欄位。 接著點選工具列的板手圖示(偏好設定,Preference),進去修改字型大小,然後開始第一個程式。以下為視訊影片教學導引: https://mobile-learning-testing.com/wp-content/uploads/2024/09/Python-0.mp4 不能免俗,我們也是要輸入輸出”Hello World!”。 在左半部程式編輯欄位,預留有註解行,包括單行註解和多行註解。前者是#字號後面的灰色字體,後者是成對的三個雙引號當中的綠色字體。可將其全部刪掉,不妨害程式碼的執行。 我們用「print(“Hello World!”)」輸入第一條指令,也可以輸入print(123),或print(123.456),或print(123.456+456.789)。 執行全部程式碼的按鈕,是在工具列中方向朝右的綠色小三角形;執行部份選取程式碼的按鈕,是工具列中有”工”字型加下方綠色小三角形的圖示。 坐而言不如起而行,Action speaks louder than words!趕緊將軟體下載、安裝、啟動,跑一下最簡單的程式,踏出最基本的第一步。

基本觀念 Read More »

增強式學習之3~隨機決策

3-3:隨機決策 早先提到的CNN神經網路中,其遮罩的係數(也就是權重),一開始是用隨機的方式來指定,在多次的訓練之後,會利用越來越小的誤差,逐步修正到比較合適的權重值。中間的步驟,也有用拋棄層(Dropout Layer)來做隨機處理的。 而增強式學習的隨機選擇考量,則是因為訓練初期獲得的資訊量有限,所以讓模型勇於嘗試各種可能性,在歷經了各種情況且反覆摸索之後,計算出最大報酬值以找出最好的策略。 前者隨機的部份是在訓練開始就全部完成,後者是在訓練過程逐次降低其比重。兩者相似的地方,就是隨機計算的處理都很快速,只不過一個是在神經層,另一個在時間序列當中。 蒙地卡羅模擬(Monte Carlo Simulation),是著名的隨機運算技術,它利用亂數產生器得到大量隨機數據,分析其統計分佈,進而引用來估計實際問題的答案,常被應用在增強式學習當中。 圖3-3-1. 提到蒙地卡羅的博弈產業,很容易聯想到隨機決策。 我們把先前的9×9迷宮訓練例子,用Python軟體再做一次比較完整的介紹。 編輯的軟體名稱為”Spyder”,是下載自Anaconda網站。程式在執行的時候,除了輸出的數據,也呈現出動態的迷宮視窗。”O”型的藍色圈代表尋找寶藏的主角(agent),經過數十回合的摸索與計算,終於找到最佳的路徑策略。 在這裡隨機選擇的比重,第1回合自然是100%,接下來就以0.8的等比級數下降。剛開始的前10個回合的機率都在10%以上,到了30回合以後漸趨為零,因為這時候得到的數據,已足夠自主判斷接下來的路徑了。當然這只是基礎的範例,比較大的問題訓練回合數可達幾萬甚至幾百萬。 https://mobile-learning-testing.com/wp-content/uploads/2024/08/mymaze.mp4 我們在”人工智慧入門”這一單元的貼文,暫時告一段落,隨後會用不定期的方式,進行這方面的發文。緊接著,我們將進入到”Python程式設計”單元,介紹實務上的一些常用指令,歡迎有心想鑽研技術細節的朋友,繼續閱讀本社團貼文。

增強式學習之3~隨機決策 Read More »

增強式學習之2~監督式學習之瓶頸

3-2:監督式學習之瓶頸 監督式學習,好像是學生在準備社會科考試一樣,唸的題目越多,背的標準答案越多,答題的準度和分數就會越高。但是要從90分考到95分,究竟要再多記憶多少內容,沒有人能提出精準的數據評估,甚至多背些考題是否一定就會提高分數,也很難講。 而且,除了記憶事物之外,舉一反三、觸類旁通的能力也很重要啊!它讓我們可以從有限的記憶中,摸索推理出不曾背誦過的資訊,這也許是人類智慧中更重要的部份。 例如有個題目問,“美國第一大都市在哪裡?”,我們很快可以回答是“紐約市”。如果再問“紐約在荷蘭人佔領期間的名稱是甚麼?”,或者“新阿姆斯特丹的北城牆,為現今金融中心的甚麼街?”,這些加以思考推理或許就可得到的答案,監督式學習必須輸入更多的資料來訓練,否則無法回答。 所以有好事者比喻,一味地只知道使用監督式學習,就像是古代巴比倫人建好巴別塔,自認為已經可以通達天際了,實際上還差了十萬八千里。 圖3-2-1. 古巴比倫人建立的巴別塔,高聳入雲霄,他們認為可以藉此和天際溝通了。 這個時候,增強式學習就可以提供有價值的處理方向了。 增強式學習,訓練次數少則數十回合(episode),多則數萬甚至數百萬回合。剛開始訓練的少數回合當中,在做決定過程時,會有比較多的隨機選擇,等到訓練過較多的回合了,能夠藉以參考的數據足夠了,就會逐漸增加自我判斷的比率,同時持續減少隨機選擇的次數。 這隨機選擇的功能,就程式設計而言,是要避免它無法跳脫不定次數迴圈;就策略規劃而言,是希望它儘量嘗試各種可能性,以真正找出最佳的報酬策略,這當中自然就會帶有一些推理成份了。 下面的9×9迷宮遊戲,主角起始位置在迷宮正中央,右下角格子的reward=+30,代表寶藏地點,找到這裡該回合即結束;左上角格子的reward= – 30,是大魔王地點,抵達此處會被吃掉,該回合同樣結束。黑色格子是不可穿越之障礙區,其餘格子皆reward= – 0.2,所以每多走一步都會被扣0.2,要用最少的步數才能得到最大的報酬(return)。 圖3-2-2. 一個9×9的迷宮遊戲,希望用最少的步數,讓主角由正中央的起始位置,找到右下角寶藏地點。 我們第一次執行模型,讓它跑100個回合,並刻意使其隨機選擇的比率以較快的速度減少,發現它要找到最佳步數的8次會比較吃力。 第二次同樣讓模型跑100個回合,但讓它的隨機選擇以較慢的速度減少,發現它的訓練成效有改善了。

增強式學習之2~監督式學習之瓶頸 Read More »

增強式學習之1~馬可夫決策過程

3-1:馬可夫決策過程 增強式學習這幾年來廣受各方矚目,主要的原因,當然是它成功地被引用在ChatGPT當中。但除了大型語言模型,增強式學習還有很多重要的應用,例如像無人載具、機器人的路徑規劃,以及數位電路、核融合及渦輪引擎的效率最佳化設計等。 增強式學習的基本概念,在於透過多次訓練逐步形成最佳策略,以找出最大報酬的最適路徑。迷宮遊戲,是最常被拿來舉例說明的範本。 圖3-1-1上圖之中,橘色球形代表遊戲的主角(agent),整個6×6迷宮就是環境(environment),其中任何一個格子的x,y座標就是狀態(state),橘球要上下左右朝哪一方向移動,就是行動(action)。 走到相鄰任何格子的獎勵(reward)應為 -1,但有兩個格子獎勵為4和5,其中並有黑色的障礙禁止區。想要成功走完迷宮的基本邏輯思考,就是以最少的步數走到獎勵為5的格子,來獲得最大的“累積獎勵”(稱為“報酬”,return)。 圖3-1-1下圖之中,是在說明,經過多個回合(episode)的訓練,系統會慢慢計算出每個格子的價值(state value),agent在決定要朝哪個方向移動下一步時,就會傾向鄰近價值最高的格子,並更新目前所在格子的價值,這就是所謂的策略(policy)。 圖3-1-1. 迷宮遊戲,是增強式學習常用的範例。 迷宮遊戲只是增強式學習的起步,但已需要一些程式設計的基礎了,這方面,適當的Python語言訓練,加上良好的直覺(intuition)是很有幫助的。 學理方面,則必須面對比較不好掌握的統計機率。這個部份,馬可夫決策過程(Markov Decision Process, MDP)當中,有一個假設需要先瞭解。 這個假設是說,“目前的時序狀態,只取決於前一個時序的狀態與行動”。換句話講,它假設了前面的時序已包含了更前面時序的訊息。所以可以利用遞迴的做法,將所有時序的關係串接起來。 馬可夫先生(1856~1922),早年就讀彼德堡文法學校,格格不入。後來就讀聖彼得堡大學,在隨機過程領域做出重要貢獻。但他並未忘情早年訓練,曾利用馬可夫鏈來模擬俄國文學中輔音和元音的頭韻法。 圖3-2. 馬可夫(Markov)畢業自聖彼得堡大學,是俄國著名的數學家。

增強式學習之1~馬可夫決策過程 Read More »

增強式學習

第三章:增強式學習 ChatGPT這種語言模型,是屬於監督式學習,例如訓練英翻中的時候,輸入一個英文句子“I have been expecting you.”,一定要同時輸入它的中文翻譯“我恭候您多時了”,用以計算其損失函數,做為回饋修正模型權重之用。模型訓練完成可以回答提問者的問題了,就是到了模型預測的階段。 但我們在不同時間點,問ChatGPT同一個問題,常常會得到有所差異的答覆。這是因為,模型一般是利用(exploit)學習經驗回答問題,但有時會探索(explore)隨機答案,目的是想增加回答內容的多樣性。 如此一來,在預測階段所提的問題,加上不同評分的答覆內容,就可以再放進模型裡面,當作另一筆訓練的資料和標記值。這樣的學習訓練方式,讓ChatGPT在往後的答覆更加合理,並且文字益形通順。 例如,“You should have studied harder.”,如果翻譯成“你原本應該更用功讀書”給予5分,如果翻成“你應該更用功讀書”給予3分,如果翻成“你應該用功讀書”給予1分。這樣的獎懲方式是「增強式學習」的基本概念,搭配上既有的監督式學習,是OpenAI公司迎頭趕上Google的重要關鍵。 圖3-1. 增強式學習(Reinforcement Learning, RL),其獎勵或懲罰(Reward),是建立最佳行動策略的重要因素。 增強式學習,和監督式及非監督式學習,並稱是人工智慧的三大學習方式。但這種學習方式有其獨特的地方。 它在建立其內部神經網路時,資料集是由自己計算所得,不需要再從外部蒐集資料;它應用的範圍甚廣,包括遊戲策略、自動駕駛、機器人控制、金融投資策略…………。 OpenAI早期喜用增強式學習來訓練遊戲,看似不務正業,實則在蓄積能量,待時機成熟即一鳴驚人。有志於這方面研發的工作人員,建議應先打好程式及理論基礎。 圖3-2. 捉迷藏遊戲,是OpenAI相當著名的增強式學習遊戲。

增強式學習 Read More »

自然語言處理之5~ChatGPT做多益測驗

2-5:ChatGPT做多益測驗 ChatGPT被稱為大型語言模型,想當然耳,它最擅長處理的必然是各類語言,包括中英文和程式語言。在模型訓練階段,它使用了大量文字(主要是英文),來進行翻譯、摘要、創作等工作,所以它也會是一個很棒的英文老師。 我們先用它來幫我們解答多益測驗的閱讀部份,在此,所引用的考題來源,是連結自本網站“英語檢定”導覽列,可由下面首頁點選進入: https://mobile-learning-testing.com 提問(prompt)的方式很簡單,只要使用下列文字即可: “請解答下列英語測驗題, 請先將全部題目閱讀一次之後, 再開始作答. ‘……….’ “ 將網頁題目複製後,貼到提問中的 ‘……….’ 部份,取代………即可(保留成對的單引號或雙引號)。但要注意,提問的時候,一定要請它先把全部題目閱讀一次之後再作答,因為這題閱讀測驗,本身有三個填空選擇題,分放在文章前、中、後段,如果只讀完填空題前一小段文字即做答,會產生誤答。 圖2-5-1. 使用ChatGPT,來閱讀一個短篇文章的英語測驗填空題。 上圖是測驗文章及題目內容。ChatGPT在閱讀題目時很有技巧,它看得懂有底線“_______”的地方,才是要填空的位置;它也知道,要去避開不是很重要又不太懂的部份,例如網頁上每題下方都有選項鈕來供點選做答,如右方所示 A   B   C   D  。但在複製貼到ChatGPT時選項鈕就看不到了,它也就視而不見了。 下圖是ChatGPT答題及解釋的內容,每個答案的對或錯它都有分析,幾乎都是一語中的,不多冗言。 未來我們會在多益聽力測驗的部份有所著墨,其在解答分析上需要多一點技巧,可等到GPT-4o等產品較普及後再來嘗試。 圖2-5-2. 使用ChatGPT,來分析填空選擇題的每個答案正確與否。

自然語言處理之5~ChatGPT做多益測驗 Read More »

自然語言處理之4~ChatGPT做網頁設計

2-4:ChatGPT做網頁設計 網頁設計,包括有前端和後端,合稱為全端。前端就是我們使用瀏覽器閱讀的頁面,常見的設計語法有HTML、CSS、JavaScript;後端是連結網頁資料庫的地方,PHP和mysql是普遍的軟體。 ChatGPT,對所有全端部份都能勝任。我們在此,僅顯示其前端設計功能,一葉知秋,它的網頁設計潛力看起來是頗值得期待。 我們在ChatGPT裡面,撰寫下列提問(prompt): “請用html和JavaScript語法, 建立一個複選(multi-choices)英語測驗題. 這個測驗題是有關’關係代名詞’的, 請將題目內容由上而下靠左對齊.” 圖2-4-1. 使用ChatGPT,來設計一個網頁英語測驗題。 上圖的關係代名詞複選測驗題的程式碼,是由ChatGPT所提供答覆。將程式碼複製貼上文書編輯器(例如記事本),再將其存成*.html檔案格式,然後快點兩次,就可以用瀏覽器閱讀其頁面了。 提問者只需用文字描述所想要的結果,其所生成的程式碼內部的指令,如按鈕(button)、核取方塊(checkbox),甚至顯示答案對或錯,一概都是ChatGPT負責寫就。讓人驚訝的,不但它使用的程式語法頗專業,它出的英語測驗題目,其難度也在多益之上。 例如答案二當中,”The person who I met……….”,常人會以為who要用受格whom才對,但實際上,使用主格who也是可以的。 圖2-4-2. 用瀏覽器開啟圖2-4-1的程式內容,得到一個關係代名詞的複選題。

自然語言處理之4~ChatGPT做網頁設計 Read More »

自然語言處理之3~ChatGPT做程式設計

2-3:ChatGPT做程式設計 使用ChatGPT整理資料或創作文字,適當的提問(prompt)是很重要的。好的提問可以做出有效的條件限制,讓它回答的內容,合理地限縮在你所需要的範圍內。 但一般人的日常對話,或者在社群平台輸入的文字,通常都比較隨興,不會刻意去講究文法和邏輯。因此在善用此項工具前,是需要花點時間學習,才能理解提問的重要性。 ChatGPT裡面,有非常強大的程式設計功能,因為它本身的神經網路機制,就是複雜又精巧的演算法。撰寫普通的程式碼,對它來講,僅是牛刀小試,但是提詞的技巧在此也益形重要。 圖2-3-1. 使用ChatGPT,來設計一個九九乘法表的程式碼。 上面的九九乘法表Python程式碼,是由ChatGPT所提供答覆,我們在提問階段,有給予一些限制,完整的提詞內容如下:”請設計一個Python程式, 可以輸出由左而右水平排列的九九乘法表. 其中, 乘數和被乘數需兩兩交換位置, 乘積的個位數需對齊. 請不要使用function, 只使用最常見之基本語法及最少之行數.”。 我們用prompt做出層層限制,其實是在用文字來代替程式碼的指令。這樣的方式,多嘗試幾次就比較能夠掌握了。複製上面的程式,再拿到Spyder軟體上執行後,得到下列的結果,看的出來,它的確有按照我們的要求在建立其邏輯。 圖2-3-2. 執行程式得到的九九乘法表,其輸出的的格式,有刻意用prompt去要求。

自然語言處理之3~ChatGPT做程式設計 Read More »

自然語言處理之2~大型語言模型

2-2:大型語言模型 現今熱門的大型語言模型,比如像ChatGPT、Gemini等,採用的都是Transformer架構。這種架構,可以將巨量訓練資料快速平行處理,但必須使用到多部AI伺服器在雲端運算,並不是一般中小型企業能負擔的起的。 所以經過一番優勝劣敗激烈交鋒,目前能提供商品化服務的,僅寥寥幾家。即使研發能力傑出如臉書(Meta),最終還是退出了第一線的競爭。 但臉書開發出來的大型語言模型第二版LLama 2,被該公司免費公開,讓其它研究資源有限的單位,可以下載其源碼,經過微調的程序,就可以套用在各自的系統當中。 圖2-2-1. Meta公司的LLAMA 2被釋出為開源碼,造福不少財力有限的研究單位。 一般中小型公司,轉而聚焦在邊緣運算當中,希望開發出來的模型,在桌上型電腦,或者平板甚至手機就可以使用,如此不但可改善網路遲延(Latency),未來創造的商機更是不可限量。 對個人工作者而言,ChatGPT也已從當初的玩具階段,晉身到工具水平了。現在它的文字輸出品質,早非昔日之吳下阿蒙。做簡報、做表格它樣樣勝任愉快;在畫圖方面,除了人物的一致性尚待加強,採用寫實風格作畫,真是栩栩如生、躍然紙上。 圖2-2-2. 向Copilot要求”請用寫實風格,畫出一張黃色柴犬的微笑圖片。”它就幫你畫出這樣的圖片。

自然語言處理之2~大型語言模型 Read More »

Shopping Cart