自從 chatgpt 發布以後,生成式的人工智慧就是市場的趨勢,很多公司,尤其中小企業,包括我們自己的公司在內,要如何把生成式的人工智慧應用於自己的公司,讓公司產生競爭力,這件事是一個很苦惱的事,首先要試圖建立一個簡單的 AI 模型,才知道模型如何運作與測試,一般的電腦是無法測試那麼的資料庫,一定要找資料庫中心,google 有提供 Colab (全名為「Colaboratory」) 可讓你在瀏覽器中編寫及執行 Python 程式碼供大型生成式程式測試。也可以使用 Kaggle 平台來測試,Kaggle 是一個數據建模和數據分析競賽平台。
如果要自己測試買具有 CPU、GPU、NPU 的伺服器(硬體)是非常高昂的費用,目前群聯電子有提供 aiDAPTW plus 方案:50 萬元就可以運轉,100 萬、200 萬元更快,就可以測試生成式 AI 的測試;但是您的需求要先知道,要有懂程式的工程設計人寫出來,再者利用目前市場已成型的大型語言模型來解決中間一些需求,經過模型與測試後才能應用在您的終端需求上。
建立簡單的 AI 模型通常包括以下步驟:
參數、嘗試不同的算法或特徵工程方法,以改進模型的性能。
這些步驟提供了建立簡單 AI 模型的基本指南,但請注意,實際的建模過程可能會因問題的複雜性和數據的特性而有所不同。
以下是一個簡單的示例
程式是 chatgpt 4.0 所寫出的,使用 TensorFlow.NET 來實現一個單層神經元模型,進行線性回歸:
class Program
{
static void Main(string[] args)
{
// 設置訓練數據
float[] inputs = { 1, 2, 3, 4 };
float[] targets = { 2, 4, 6, 8 };
// 定義模型
var graph = new TFGraph();
var session = new TFSession(graph);
var W = graph.VariableV2(new TFShape(1), TFDataType.Float);
var b = graph.VariableV2(new TFShape(1), TFDataType.Float);
var x = graph.Placeholder(TFDataType.Float);
var y = graph.Add(graph.Mul(x, W), b);
// 定義損失函數和優化器
var y_true = graph.Placeholder(TFDataType.Float);
var loss = graph.Mean(graph.SquaredDifference(y_true, y));
var optimizer = new TFOptimizer(graph).GradientDescentOptimizer(0.01f).Minimize(loss);
// 初始化變量
session.Run(graph.GlobalVariablesInitializer());
// 訓練模型
for (var i = 0; i < 100; i++)
{
session.Run(
optimizer,
new TFTensor[] { x },
new TFTensor[]
{
inputs.Select(v => v).ToArray(),
},
new TFOutput[] { y_true },
new TFTensor[] { targets.Select(v => v).ToArray() });
}
// 查看訓練後的參數
var result = session.Run(new TFOutput[] { W, b });
float trainedW = ((float[][])result[0].GetValue(jagged: true))[0][0];
float trainedb = ((float[][])result[1].GetValue(jagged: true))[0][0];
Console.WriteLine($"Trained Weight (W): {trainedW}");
Console.WriteLine($"Trained Bias (b): {trainedb}");
// 測試模型
float testInput = 5;
float predictedOutput = session.Run(y, new TFTensor[] { x }, new[] { new TFTensor(testInput) })
.GetValue()[0][0].GetValue<float>();
Console.WriteLine($"Predicted output for input {testInput}: {predictedOutput}");
session.CloseSession();
}
}