發表文章

目前顯示的是 2月, 2025的文章

損失函數(Loss function)、學習速率(Learning Rate)

圖片
  https://theprofessionalspoint.blogspot.com/2019/02/loss-functions-in-machine-learning-mae.html 損失函數(Loss function) 損失函數就代表「實際值跟預測值的殘差」 基本上分為兩個淺面向(分類、回歸),基本上都希望最小化損失函數。 在回歸問題中,我們通常希望模型很棒,預測出來東西可跟實際值趨近一樣。然而現實是不可能預測的值跟實際值會完全相同。預測出來的東西基本上跟實際值都一定有落差,在統計中針對此落差專業術語就稱作 「殘差」(residual) ,損失函數愈低愈好。 常見Loss function像是RMSE、MSE 和 MAE 等, 都是用於優化深度學習模型的最常用誤差函數。 假設一個模型採用訓練數據並預測下表中的數值。 target 是預測的正確答案,epoch 是訓練次數。 於以下表格中當第二次epoch時候,預測第 3 個值是一個異常值。 因為它預測到與目標的第 3 個值 7 有顯著偏差。 MSE、RMSE 和 MAE 的計算方法如下: 學習速率(Learning Rate) 在優化過程中,Learing Rate應該要逐步減小,越接近"山谷"時候,要邁開的"步伐:應該愈小。 通常用人工調節手法,可以先對Learning Rate設初始值,比方0.25,之後當跌代到一定程度比方第25個epoch時,再將Learning rate除以10,變成設為0.025。 或者自動調節,簡單有效的常見作法是,當驗證集準確率不再提高時,可將Learning rate減半或除以10,再繼續跌代。 不見得愈低(高)就愈好,剛剛好就會好,過猶不及。 會根據模型、訓練過程而有不同調節情況。 學習率設定0.5情況(步伐緩慢,但最終有成功到達目的地) 可以想像夜晚無燈光開山路的感覺,會十分緩慢步伐小十分謹慎。 學習率設定0.9情況(不夠謹慎,有喝醉酒亂走偏移情況,但最終也有成功到達目的地山頂。) 當學習率設定1情況(開始失敗,過猶不及,愈急愈容易失敗。) Ref: https://chih-sheng-huang821.medium.com/%E6%A9%9F%E5%99%A8%E5%AD%B8%E7%BF%92-%E5%9F%BA%E7%A4%8E...

第一代類神經網路(感知機時代)延伸到後期神經網路架構

圖片
  https://zhengyu.tech/archives/shen-du-xue-xi-zhong-de-ji-huo-han-shu 第一代類神經網路(感知機時代) 人工神經網路(ANN,Artificial Neuron Net) 由許多人工神經元(Artificial Neuron)所組成。 用於模擬人腦神經的架構與原理,藉此解決一些決策判定上問題。 簡單的神經元如何運作的?(只有一層會有權重W跟偏差值bias) 假設有兩個神經元X 跟 Y將信號傳遞到另一個神經元Z。 X跟Y是傳遞信號的傳入神經元,Z是接收信號的輸出神經元(接收並激活)。 輸入神經元透過互連鏈路(A跟B)連接到輸出神經元。 臨界值區分輸出0或1 https://towardsdatascience.com/the-basics-of-neural-networks-neural-network-series-part-1-4419e343b2b-2/ 權重(Weight):  用來決定輸入特徵對神經元輸出的影響程度。 偏差值(Bias): 對輸出的一個常數偏移,偏差值就像調整這個門檻的高度,讓神經元更容易或更難被激活。 激活函數(Activation function): 好比如一定的門檻,只有當輸入超過這個門檻時,神經元才會被激活。 隨著發展慢慢感知機時代的處裡無法滿足後續不限純數值或線性問題計算。權重的自我學習也成為重要性質之一,激活函數也愈來愈重要, 激活函數主要用於解決非線性的應用問題(二分類、多分類、迴歸問題【連續性數據】) 。在類神經網路中使用到的激勵函數主要是利用非線性方程式去解決非線性問題。 神經網路的一個重要性質是他可以自動地從數據中學習到合適的權重參數。 激活函數會將輸入信號的總和轉換為輸出信號。具體操作是將輸入(X)和它們相對的權重(W)之乘積之加總,並將激活函數用於其獲取該層的輸出並將其作為輸入饋送到下一層。 若不使用激勵函數,類神經網路會以線性的方式組合運算,因隱藏層以及輸出層皆是將上層結果輸入,並以線性組合計算作為這一層輸出。使得輸出跟輸入只會存在線性關係。 然而,實際環境絕大部分都屬於非線性問題。 https://lassehansen.me/post/neural-networks-step-by-step/ https://zhuanl...

T-SQL筆記62_BCP

 在使用 SQL Server 的 BCP (Bulk Copy Program) 工具匯出數據時,如果遇到中文別名變成亂碼的問題,通常是由於編碼設置不正確所導致。這裡有幾個步驟可以嘗試解決這個問題: 指定正確的字符集:在 BCP 命令中使用 -C 參數來指定正確的字符集。例如,如果你的數據庫使用的是中文字符集,可能需要設置 -C ACP 來使用活動代碼頁,或者使用 -C 936 指定簡體中文的代碼頁。使用 -C ACP 可以幫助確保 BCP 輸出或輸入的數據正確處理中文字符,避免出現亂碼,特別是當資料庫存儲的數據使用的是與 Windows 系統相同的字符編碼時。 bcp "SELECT * FROM your_table" queryout output_file.txt -c -C ACP -T -S your_server 在 SQL Server 的 BCP 工具中使用 -C 參數是來指定字符集的。-C ACP 這個參數指的是讓 BCP 使用活動代碼頁(Active Code Page)進行資料的匯出或匯入。代碼頁(Code Page)是一種用於提供特定語言字符集支援的編碼系統。 活動代碼頁 ACP 通常指的是在 Windows 系統上設定為預設的系統本地字符集,它會根據操作系統的地區設置自動調整。例如,在中文版 Windows 上,活動代碼頁通常設定為 936(即 CP936,對應於簡體中文 GBK 編碼)。 -T 參數用於指定使用 Windows 驗證。 -c 參數用於指定以字符模式進行數據輸出,適合文本數據。 使用 Unicode 格式:如果 -C 參數無法解決問題,嘗試將輸出格式設為 Unicode 格式。使用 -w 參數來將輸出設為 Unicode。 bcp "SELECT * FROM your_table" queryout output_file.txt -w -T -S your_server 啟用xp_cmdshell後就可以用它來間接執行bcp EXEC sp_configure 'show advanced options' , 1 ;  RECONFIGURE;  EXEC sp_configure 'xp_cmdshell' , 1 ;  RECONFIG...

透過單方向LSTM進行短時間的交通流量預測_part2.建構資料集並進行訓練_RMSE,MAE,MAPE指標模型訓練效果可視化

圖片
  程式碼 import numpy as np import time import math import torch import torch.utils.data as Data import matplotlib.pyplot as plt #引入sklearn現成的損失函數MSE(均方誤差),MAE(平均絕對誤差) #MSE(均方誤差):預測值減真實值後再平分取平均 #MAE(平均絕對誤差):預測值減真實值取絕對值後再取平均 from sklearn.metrics import mean_squared_error as mse,mean_absolute_error as mae from torch import nn #把第一階段資料讀取處理放在另一個.py檔案引入 from trafficflow_readdata import X_train, X_test, y_train, y_test device = torch . device( "cuda:0" if torch . cuda . is_available() else "cpu" ) print (device) #透過torch.utils.data建構模型訓練需要的訓練集物件 train_dataset = Data . TensorDataset(torch . Tensor(X_train),torch . Tensor(y_train)) #將測試集轉為張量 X_test = torch . Tensor(X_test) #用torch.utils.data建構數據產生器,按批次生成訓練數據 batch_size = 128 train_loader = Data . DataLoader(dataset = train_dataset, batch_size = batch_size, shuffle = True , #是否要隨機打亂數據 num_worker...

透過單方向LSTM進行短時間的交通流量預測_part1.資料預處理和EDA特徵挑選(使用PEMS04資料集)

圖片
這邊會用PEMS04資料集做交通流量預測的測試(以下提供3個資料集下載連結) https://www.kaggle.com/datasets/wenkeda/pems04 https://zenodo.org/records/7816008 https://github.com/Davidham3/ASTGCN-2019-mxnet/tree/master/data/PEMS04 https://github.com/Davidham3/ASTGCN-2019-mxnet/blob/master/data/README.md Each npz file contains one key, named "data", the shape is (sequence_length, num_of_vertices, num_of_features). 數據集來源於PeMS網站,包含了三藩市灣區(美國加尼福尼亞州三藩市大灣區)29條高速公路上的3848個探測器在2018年1月1日至2018年2月28日期間的數據。 這些探測器每5分鐘收集一次數據,記錄了3848個感測器每5分鐘經過的車輛數。 Performance Measurement System (PeMS) Data Source https://dot.ca.gov/programs/traffic-operations/mpr/pems-source https://pems.dot.ca.gov/ 地圖上顯示的交通數據是從 39,000 多個單獨的檢測器中即時收集的。這些感測器覆蓋加利福尼亞州所有主要大都市地區的高速公路系統。 在這篇文獻 Problem: Road Trajectory Prediction 有介紹到該數據集維度 浙江大学学报(工学版)這篇文獻也可供參考 Traffic flow prediction model based on spatio-temporal graph convolution with multi-information fusion 探測器節點數: 307 特徵數(每個探測器每次採集的數據有3個維度特徵): 3 數據時長: 59天 時間視窗: 5分鐘 可登入Kaggle後下載資料集 Processing traffic data for deep ...