圖 27 1 ChatGPT應用概念圖
ChatGPT很會考試,擅長回答問題,尤其是是非題和選擇題。我們拿112年高普考資訊安全考試題目來讓他回答申論題和選擇題。考試下載網址如下:
https://wwwq.moex.gov.tw/exam/wFrmExamQandASearch.aspx
讀者相同的題目可以比較補習班的解答,例如高上高普考,網址如下:
https://goldensun.get.com.tw/Answer/
高考三級_資訊處理,資通網路與安全這科,考試時間是120分鐘,第一題配分比重是30分,也就是ChatGPT的答案,如果人工抄寫必須要30分鐘之內寫的完。這個也很考驗補習班解題老師的功力,因為補習班通常能解題解的很完整,但是筆者自已的經驗,要在時限內將解題的答案照抄一份,時間容易超過。
但是,在考場上奮戰到最後一分鐘是很重要的,筆者曾經考二次普考保險經紀人,第一次去考試時,把會寫的寫完就交卷了。結果沒有及格。第二次去的時候,面對申論題,我把會寫的寫完後,再加寫實務點評,一項項談我的看法和時事的結合,結果僥倖錄取,我都寫到時間到打鈴才停筆。
好的,話題回到ChatGPT對高普考題目的解答,以下面這個範例為例,考題問的是資安三大元素,機密性、可用性、完整性的其中二個。比較ChatGPT和補習班老師的解題,我們可以發現ChatGPT很小心,只要我們有問的,他都會有相對應的回答,像是完整性的應注意事項,補習班老師沒有寫但ChatGPT有特別去回應。
對我們而言,憲法有保障人民有應考試、服公職的權利,當我們還在為入職考試(例如企業或政府的招考)能不能用ChatGPT,其中道德的問題在糾結時,企業、政府、學校內部早已經擁抱這個解決方案,讓生成式人工智慧(AI)成為工作的助手。
或許有一天,大學聯考、高普考,考生都可以帶手機版或筆電版的ChatGPT應試,就像大學裡面某些科目在考試時允許考生看教科書做答。但是ChatGPT出包的機率也挺高:
一、 ChatGPT會產出未經查證的內容:有個律師控告ChatGPT,因為他用來寫訴狀,但是ChatGPT所列出來的過往判例,是自己生成的,現實世界中不存在。如此即造成律師的困擾。
二、 ChatGPT用來學習的內容侵害智慧財產權:作家們控告ChatGPT,因為作家們聲稱,他們的作品是在未經許可的情況下被納入ChatGPT訓練用的數據集中,還說這套系統可以精確地概述他們的作品,生成模仿他們作品風格的文本 。如果一個中國偏鄉的小朋友,或是一個非洲的小朋友,透過大量的閱讀,後來成為一名知名的文學家,這個在倫理上是翻轉階級的經典案例,那麼為何同樣是學習,一個人工智慧看書就不行呢?
三、 ChatGPT的水足跡 :建構大型語言模型需分析出海量人類手寫文本中的語言模式,所有運算過程均會耗費大量電力並產生熱能,所以各家企業開發的人工智慧模型會耗費大量的水來冷卻電腦。其實電廠也需要冷卻水,但其排水口的水質比天然海水還要好,溫度也適中,所以AI業者其實是可以參訪電廠的做法的。
我:一、請回答下列資訊安全三大元素的相關問題:
請說明機密性,並說明如何應用非對稱式密碼學達成。
請說明完整性,並說明其主要演算法暨應注意事項。
ChatGPT
一、資訊安全三大元素包括機密性、完整性和可用性。以下是有關機密性的解釋以及如何應用非對稱式密碼學實現它的方法:
機密性(Confidentiality):
機密性是指確保資訊只能被授權的人或系統訪問和查看,防止未經授權的訪問、洩漏或泄露敏感資訊。應用機密性原則的主要目標是保護敏感資訊的機密性,以確保只有授權的實體可以存取和理解資訊。
如何應用非對稱式密碼學實現機密性:
非對稱式密碼學(Asymmetric Cryptography)使用了兩個密鑰,即公開金鑰和私人金鑰,以確保資訊的機密性。這是一種常見的方法,可以實現機密性,以下是實現機密性的步驟:
a. 公開金鑰和私人金鑰的生成:使用非對稱式密碼學演算法(例如RSA或橢圓曲線加密)生成一對公開金鑰和私人金鑰。公開金鑰可以分享給任何人,而私人金鑰必須嚴格保密。
b. 加密資訊:當需要傳輸機密資訊時,使用接收方的公開金鑰來加密資訊。只有擁有相應私人金鑰的接收方才能解密資訊。
c. 解密資訊:接收方使用其私人金鑰來解密接收到的資訊,恢復原始的機密內容。
d. 保護私人金鑰:確保私人金鑰的機密性,以防止未經授權的訪問,這樣可以確保只有合法的用戶能夠解密資訊。
完整性(Integrity):
完整性是指確保資訊在傳輸或存儲過程中不被未經授權的修改、竄改或破壞。這意味著資訊在傳輸或存儲過程中應該保持不變,並且只有授權的用戶才能夠對其進行更改。
主要的完整性演算法:
主要用於確保資訊完整性的演算法包括:
a. 雜湊函數(Hash Functions):雜湊函數將輸入資訊轉換為固定長度的雜湊值,任何對輸入資訊的微小更改都會導致雜湊值的顯著變化。接收方可以使用相同的雜湊函數來檢查資訊的完整性,確保它在傳輸過程中未被竄改。
b. 數位簽名(Digital Signatures):數位簽名使用非對稱式密碼學,由資訊的發送者使用其私人金鑰來簽署資訊,接收方可以使用發送者的公開金鑰來驗證簽名,確保資訊的完整性和真實性。
應注意事項:
在確保資訊完整性時,需要注意以下事項:
a. 保護密鑰:確保用於生成雜湊或數位簽名的密鑰得到嚴格保護,以防止未經授權的使用或竄改。
b. 頻繁檢查:定期檢查資訊的完整性,以確保它在傳輸或存儲過程中未受到破壞。
c. 使用強健的演算法:選擇安全的雜湊函數和非對稱式密碼學演算法,以確保攻擊者難以破解或竄改資訊。
程式設計是生成式AI的強項,我們試著用Microsoft Bing來寫一個ExcelVBA,但首先我們要先開啟VBA功能,操作步驟如下:
Step1. 開啟範例程式檔bing.xlsm,此時系統會提示由於安全性因素,已經停用巨集,請點「選項」(編號1紅色箭頭處)
圖 27 2 開啟Excel VBA功能(一)
Step2. 接著Microsoft Office安全性選項,請點選「啟用這個內容」(編號1),再按下「確定」(編號2)
圖 27 3 開啟Excel VBA功能(二)
Step3. 然後瀏覽器搜尋bing,網址為:https://www.bing.com/
圖 27 4 用Bing寫程式(一)
我:我要在excel裡面用VBA 實現五個X變數(X1到X5)和一個Y變數的迴歸計算 請幫我寫一個VBA
Bing:謝謝您的提問。以下是一個簡單的VBA程式碼,可以實現五個X變數(X1到X5)和一個Y變數的迴歸計算:
Step4. 如圖 27 5 用Bing寫程式(二)所示,Bing寫的程式(編號1),我們可以複製下來。(編號2箭頭處)
圖 27 5 用Bing寫程式(二)
Step5. 如圖 27 6 用Bing寫程式(三)所示,Bing寫的程式,我們複製以後在Excel裡面按Alt-F11,然後在左方選取Sheet1(Sheet1)(編號1),然後將程式貼進去內容區(編號2),即可按下執行(編號3紅色箭頭處)。
圖 27 6 用Bing寫程式(三)
Dim X(1 To 5) As Double
Dim Y As Double
Dim i As Integer
Dim SumX As Double
Dim SumY As Double
Dim SumXY As Double
Dim SumX2 As Double
Dim Slope As Double
Dim Intercept As Double
' Assign values to X and Y variables
X(1) = 1.2
X(2) = 2.3
X(3) = 3.4
X(4) = 4.5
X(5) = 5.6
Y = 10.8
' Calculate the sums of X, Y, XY, and X^2
For i = 1 To 5
SumX = SumX + X(i)
SumY = SumY + Y
SumXY = SumXY + (X(i) * Y)
SumX2 = SumX2 + (X(i) ^ 2)
Next i
' Calculate the slope and intercept of the regression line
Slope = ((5 * SumXY) - (SumX * SumY)) / ((5 * SumX2) - (SumX ^ 2))
Intercept = (SumY - (Slope * SumX)) / 5
' Display the results in a message box
MsgBox "The slope of the regression line is " & Slope & "." & vbCrLf & _
"The intercept of the regression line is " & Intercept & "."
圖 27 7 執行結果以訊息方塊顯示
Step6. 我們再進一步要求Bing重寫程式,注意原先的程式 是Sub RegressionR1(),新程式為Sub RegressionR2(),這個要手動修改。
我:X1-X5各有50筆資料 Y也有50筆資料 放在Excel 2007 的Sheet1中 請重寫程式
Bing:以下是一個可以實現五個X變數(X1到X5)和一個Y變數的迴歸計算的VBA程式碼,假設這些資料已經放在Excel 2007的Sheet1中,X1到X5的資料分別放在A2到A51、B2到B51、C2到C51、D2到D51和E2到E51,Y的資料放在F2到F51:
Sub RegressionR2()
Dim X(1 To 50, 1 To 5) As Double
Dim Y(1 To 50) As Double
Dim i As Integer
Dim j As Integer
Dim SumX(1 To 5) As Double
Dim SumY As Double
Dim SumXY(1 To 5) As Double
Dim SumX2(1 To 5) As Double
Dim Slope(1 To 5) As Double
Dim Intercept As Double
' Assign values to X and Y variables
For i = 1 To 50
X(i, 1) = Range("A" & i + 1).Value
X(i, 2) = Range("B" & i + 1).Value
X(i, 3) = Range("C" & i + 1).Value
X(i, 4) = Range("D" & i + 1).Value
X(i, 5) = Range("E" & i + 1).Value
Y(i) = Range("F" & i + 1).Value
Next i
' Calculate the sums of X, Y, XY, and X^2
For j = 1 To 5
For i = 1 To 50
SumX(j) = SumX(j) + X(i, j)
SumY = SumY + Y(i)
SumXY(j) = SumXY(j) + (X(i, j) * Y(i))
SumX2(j) = SumX2(j) + (X(i, j) ^ 2)
Next i
' Calculate the slope and intercept of the regression line for each variable
Slope(j) = ((50 * SumXY(j)) - (SumX(j) * SumY)) / ((50 * SumX2(j)) - (SumX(j) ^ 2))
Intercept = (SumY - (Slope(j) * SumX(j))) / 50
' Display the results in a message box for each variable
MsgBox "The slope of the regression line for variable X" & j & " is " & Slope(j) & "." & vbCrLf & _
"The intercept of the regression line for variable X" & j & " is " & Intercept & "."
' Reset the sums for the next variable
SumY = 0
For k = LBound(X, 2) To UBound(X, 2)
SumX(k) = 0
SumXY(k) = 0
SumX2(k) = 0
Next k
Next j
End Sub
Step7. 接著我們要求Bing結果不以訊息方塊顯示,而是轉存到sheet2,並計算模型解釋力R2。
我:現在程式是用msgbox呈現 我需要將結果轉存到sheet2 而且要計算R2 模型解釋力
Bing:以下是一個可以實現五個X變數(X1到X5)和一個Y變數的迴歸計算的VBA程式碼,假設這些資料已經放在Excel 2007的Sheet1中,X1到X5的資料分別放在A2到A51、B2到B51、C2到C51、D2到D51和E2到E51,Y的資料放在F2到F51。程式碼會將結果轉存到Sheet2中,並計算R2模型解釋力
Sub RegressionR3()
Dim X(1 To 50, 1 To 5) As Double
Dim Y(1 To 50) As Double
Dim i As Integer
Dim j As Integer
Dim SumX(1 To 5) As Double
Dim SumY As Double
Dim SumXY(1 To 5) As Double
Dim SumX2(1 To 5) As Double
Dim Slope(1 To 5) As Double
Dim Intercept As Double
Dim R2(1 To 5) As Double
' Assign values to X and Y variables
For i = 1 To 50
X(i, 1) = Range("A" & i + 1).Value
X(i, 2) = Range("B" & i + 1).Value
X(i, 3) = Range("C" & i + 1).Value
X(i, 4) = Range("D" & i + 1).Value
X(i, 5) = Range("E" & i + 1).Value
Y(i) = Range("F" & i + 1).Value
Next i
' Calculate the sums of X, Y, XY, and X^2
For j = 1 To 5
For i = 1 To 50
SumX(j) = SumX(j) + X(i, j)
SumY = SumY + Y(i)
SumXY(j) = SumXY(j) + (X(i, j) * Y(i))
SumX2(j) = SumX2(j) + (X(i, j) ^ 2)
Next i
' Calculate the slope and intercept of the regression line for each variable
Slope(j) = ((50 * SumXY(j)) - (SumX(j) * SumY)) / ((50 * SumX2(j)) - (SumX(j) ^ 2))
Intercept = (SumY - (Slope(j) * SumX(j))) / 50
' Calculate R-squared for each variable
R2(j) = ((50 * SumXY(j)) - (SumX(j) * SumY)) ^ 2 / ((50 * SumX2(j)) - (SumX(j) ^ 2)) / ((50 * SumY ^ 2) - (SumY ^ 2))
' Display the results in Sheet2 for each variable
Sheets("Sheet2").Range("A" & j).Value = "The slope of the regression line for variable X" & j & " is " & Slope(j)
Sheets("Sheet2").Range("B" & j).Value = "The intercept of the regression line for variable X" & j & " is " & Intercept
Sheets("Sheet2").Range("C" & j).Value = "The R-squared value for variable X" & j & " is " & R2(j)
' Reset the sums for the next variable
SumY = 0
For k = LBound(X, 2) To UBound(X, 2)
SumX(k) = 0
SumXY(k) = 0
SumX2(k) = 0
Next k
Next j
End Sub
Step8. 如所示,接著我們就會得到X1-X5變數的模型解釋力,其中X2、X3變數的解釋力是最大的,而X4解釋力最小,所以如果要剔除變數,優先剔除X4。
圖 27 8 得到模型解釋力
Tips
讀者可參閱圖 19 11,關於可解釋AI模型的說明,那時我們提到變數減少時要試誤,試的方法就是優先剔除低解釋力的變數。
威脅獵補,經過實測的結果,給一段事件紀錄,微軟的Bing不會分析,而是提供網路文章連結。Google的Bard會給分析建議。Open AI的ChatGPT也會給分析建議。所以我們知道Bing擅長寫程式,Bard和ChatGPT擅長分析和對話。
文章或會議彙總,當有一篇長篇的英文文章,或是一個會議,都可以用AI工具來讀並產生摘要。例如筆者在做履歷健診時,有位馬來西亞籍的求職者,希望透過文字來改變世界也改變自己的生活,他想跳脫舒適圈到台北來工作,我就會建議他先開一個台灣的銀行帳戶,然後在台灣的文字創作網站例如pubu寫稿,經營自己的品牌。那時候忘了提醒他,寫稿的過程也可以用ChatGPT來協助理清思路、增加創意。
模組化程式開發,指的是將一個大型程式的各個功能(例如有100隻程式的一個網站),分開成一個個小一點的模組,丟到ChatGPT協助撰寫,會比直接要求ChatGPT寫一整個網站要有效率的多。
結論:如同圖 27 1所示,我們要善用ChatGPT,要先具有正確的領域知識,以模組化的方式來提問,然後勤於驗證。如此AI工具才能夠成為工作上的好幫手。
請讀者注意