検索
ホームページテクノロジー周辺機器AI因果畳み込みニューラル ネットワーク

因果畳み込みニューラル ネットワーク

Jan 24, 2024 pm 12:42 PM
人工ニューラルネットワーク

因果畳み込みニューラル ネットワーク

因果畳み込みニューラル ネットワークは、時系列データの因果関係の問題のために設計された特別な畳み込みニューラル ネットワークです。従来の畳み込みニューラル ネットワークと比較して、因果畳み込みニューラル ネットワークは、時系列の因果関係を保持するという独特の利点があり、時系列データの予測と分析に広く使用されています。

因果畳み込みニューラル ネットワークの中心的なアイデアは、畳み込み演算に因果関係を導入することです。従来の畳み込みニューラルネットワークは、現時点の前後のデータを同時に認識できますが、時系列予測では情報漏洩の問題が発生する可能性があります。現時点での予測結果は、将来の時点のデータに影響を受けるからです。この問題を解決するのが因果畳み込みニューラルネットワークであり、現時点と過去のデータのみを認識することができ、未来のデータを認識することができないため、時系列データの因果関係を保証することができる。したがって、因果畳み込みニューラル ネットワークは、時系列データの予測と分析の問題をより適切に処理できます。

因果畳み込みニューラル ネットワークを実装するには多くの方法がありますが、一般的な方法の 1 つは因果畳み込みカーネルを使用することです。コーザルコンボリューションカーネルは、現在の時点と以前のデータのみを認識でき、将来のデータを認識できない特殊なコンボリューションカーネルです。この設計により、畳み込み結果が将来のデータによって妨げられないことが保証され、時系列データの因果関係が可能になります。因果畳み込みニューラル ネットワークは、この特性を利用して、時系列データを処理するときに因果関係をより適切に捕捉します。したがって、因果畳み込みカーネルを導入することで、時系列データを効果的に処理でき、モデルのパフォーマンスを向上させることができます。

因果畳み込みカーネルに加えて、因果畳み込みニューラル ネットワークには、因果プーリングや残差構造の導入など、他の実装方法もあります。因果プーリングは、時系列データの因果関係を保存する特別なプーリング操作です。因果関係プーリングでは、各プーリング ウィンドウには現在の時点とそれ以前のデータのみが含まれ、将来のデータは含まれません。これにより、情報漏洩が効果的に回避され、モデルの安定性と堅牢性が向上します。

簡単な例を示します。まず、必要なライブラリとモジュールをインポートする必要があります:

import torch
import torch.nn as nn
import torch.optim as optim
import numpy as np
import pandas as pd
from sklearn.preprocessing import MinMaxScaler

次に、データを読み取り、処理します:

data = pd.read_csv('temperature.csv')
scaler = MinMaxScaler(feature_range=(-1, 1))
data['scaled_temperature'] = scaler.fit_transform(data['temperature'].values.reshape(-1, 1))
data.drop(['temperature'], axis=1, inplace=True)

次に、データ セットをトレーニング セットとテスト セットに分割します:

train_size = int(len(data) * 0.8)
test_size = len(data) - train_size
train_data, test_data = data.iloc[0:train_size], data.iloc[train_size:len(data)]

次に、因果畳み込みニューラル ネットワーク モデルを定義します:

class CCN(nn.Module):
    def __init__(self, input_size, output_size, num_filters, kernel_size):
        super(CCN, self).__init__()
        self.conv1 = nn.Conv1d(input_size, num_filters, kernel_size, padding=kernel_size - 1)
        self.conv2 = nn.Conv1d(num_filters, num_filters, kernel_size, padding=kernel_size - 1)
        self.conv3 = nn.Conv1d(num_filters, num_filters, kernel_size, padding=kernel_size - 1)
        self.conv4 = nn.Conv1d(num_filters, num_filters, kernel_size, padding=kernel_size - 1)
        self.conv5 = nn.Conv1d(num_filters, num_filters, kernel_size, padding=kernel_size - 1)
        self.conv6 = nn.Conv1d(num_filters, num_filters, kernel_size, padding=kernel_size - 1)
        self.conv7 = nn.Conv1d(num_filters, num_filters, kernel_size, padding=kernel_size - 1)
        self.conv8 = nn.Conv1d(num_filters, num_filters, kernel_size, padding=kernel_size - 1)
        self.conv9 = nn.Conv1d(num_filters, num_filters, kernel_size, padding=kernel_size - 1)
        self.conv10 = nn.Conv1d(num_filters, output_size, kernel_size, padding=kernel_size - 1)

    def forward(self, x):
        x = torch.relu(self.conv1(x))
        x = torch.relu(self.conv2(x))
        x = torch.relu(self.conv3(x))
        x = torch.relu(self.conv4(x))
        x = torch.relu(self.conv5(x))
        x = torch.relu(self.conv6(x))
        x = torch.relu(self.conv7(x))
        x = torch.relu(self.conv8(x))
        x = torch.relu(self.conv9(x))
        x = self.conv10(x)
        return x

モデルの定義が完了したら、データを次のようにする必要があります。モデルに入力できるように前処理する必要があります。データを PyTorch の Tensor タイプに変換し、それを 3D tensor、つまり (batch_size、sequence_length、input_size) の形式に変換します。

def create_sequences(data, seq_length):
    xs = []
    ys = []
    for i in range(len(data) - seq_length - 1):
        x = data[i:(i + seq_length)]
        y = data[i + seq_length]
        xs.append(x)
        ys.append(y)
    return np.array(xs), np.array(ys)

sequence_length = 10
trainX, trainY = create_sequences(train_data['scaled_temperature'], sequence_length)
testX, testY = create_sequences(test_data['scaled_temperature'], sequence_length)

trainX = torch.from_numpy(trainX).float()
trainY = torch.from_numpy(trainY).float()
testX = torch.from_numpy(testX).float()
testY = torch.from_numpy(testY).float()

trainX = trainX.view(-1, sequence_length, 1)
trainY = trainY.view(-1, 1)
testX = testX.view(-1, sequence_length, 1)
testY = testY.view(-1, 1)

次に、トレーニング プロセスを定義します:

num_epochs = 1000
learning_rate = 0.001
num_filters = 64
kernel_size = 2

model = CCN(input_size=1, output_size=1, num_filters=num_filters, kernel_size=kernel_size)
criterion = nn.MSELoss()
optimizer= optim.Adam(model.parameters(), lr=learning_rate)

for epoch in range(num_epochs):
    optimizer.zero_grad()
    outputs = model(trainX)
    loss = criterion(outputs, trainY)
    loss.backward()
    optimizer.step()

    if epoch % 100 == 0:
        print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, num_epochs, loss.item()))

最後に、テスト セットを使用してモデルを評価します。

with torch.no_grad():
    test_outputs = model(testX)
    test_loss = criterion(test_outputs, testY)
    print('Test Loss: {:.4f}'.format(test_loss.item()))

    test_outputs = scaler.inverse_transform(test_outputs.numpy())
    testY = scaler.inverse_transform(testY.numpy())

    test_outputs = np.squeeze(test_outputs)
    testY = np.squeeze(testY)

    plt.plot(test_outputs, label='Predicted')
    plt.plot(testY, label='True')
    plt.legend()
    plt.show()

上記は、時系列データの予測に使用できる、単純な因果畳み込みニューラル ネットワーク モデルの実装プロセスです。実際のアプリケーションでは、より良いパフォーマンスを達成するために、特定のタスクに応じてモデルを調整および最適化する必要がある場合があることに注意してください。

従来の畳み込みニューラル ネットワークと比較して、因果畳み込みニューラル ネットワークには、時系列データを処理する際に独特の利点があります。情報漏洩の問題を効果的に回避し、時系列の因果関係をより適切に保存できます。したがって、時系列データの予測と分析において、因果畳み込みニューラル ネットワークは一部のタスクで優れたパフォーマンスを示しています。たとえば、音声認識、自然言語処理、株価予測などの分野では、因果畳み込みニューラル ネットワークが広く使用されており、いくつかの目覚ましい成果を上げています。

以上が因果畳み込みニューラル ネットワークの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は网易伏羲で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
ほとんどが使用されています10 Power BIチャート - 分析Vidhyaほとんどが使用されています10 Power BIチャート - 分析VidhyaApr 16, 2025 pm 12:05 PM

Microsoft PowerBIチャートでデータ視覚化の力を活用する 今日のデータ駆動型の世界では、複雑な情報を非技術的な視聴者に効果的に伝えることが重要です。 データの視覚化は、このギャップを橋渡しし、生データを変換するi

AIのエキスパートシステムAIのエキスパートシステムApr 16, 2025 pm 12:00 PM

エキスパートシステム:AIの意思決定力に深く飛び込みます 医療診断から財務計画まで、あらゆることに関する専門家のアドバイスにアクセスできることを想像してください。 それが人工知能の専門家システムの力です。 これらのシステムはプロを模倣します

3人の最高の雰囲気コーダーがこのAI革命をコードで分解する3人の最高の雰囲気コーダーがこのAI革命をコードで分解するApr 16, 2025 am 11:58 AM

まず第一に、これがすぐに起こっていることは明らかです。さまざまな企業が、現在AIによって書かれているコードの割合について話しており、これらは迅速なクリップで増加しています。すでに多くの仕事の移動があります

滑走路AIのGen-4:AIモンタージュはどのように不条理を超えることができますか滑走路AIのGen-4:AIモンタージュはどのように不条理を超えることができますかApr 16, 2025 am 11:45 AM

映画業界は、デジタルマーケティングからソーシャルメディアまで、すべてのクリエイティブセクターとともに、技術的な岐路に立っています。人工知能が視覚的なストーリーテリングのあらゆる側面を再構築し始め、エンターテイメントの風景を変え始めたとき

5日間のISRO AI無料コースを登録する方法は? - 分析Vidhya5日間のISRO AI無料コースを登録する方法は? - 分析VidhyaApr 16, 2025 am 11:43 AM

ISROの無料AI/MLオンラインコース:地理空間技術の革新へのゲートウェイ インド宇宙研究機関(ISRO)は、インドのリモートセンシング研究所(IIRS)を通じて、学生と専門家に素晴らしい機会を提供しています。

AIのローカル検索アルゴリズムAIのローカル検索アルゴリズムApr 16, 2025 am 11:40 AM

ローカル検索アルゴリズム:包括的なガイド 大規模なイベントを計画するには、効率的なワークロード分布が必要です。 従来のアプローチが失敗すると、ローカル検索アルゴリズムは強力なソリューションを提供します。 この記事では、Hill ClimbingとSimulについて説明します

OpenaiはGPT-4.1でフォーカスをシフトし、コーディングとコスト効率を優先しますOpenaiはGPT-4.1でフォーカスをシフトし、コーディングとコスト効率を優先しますApr 16, 2025 am 11:37 AM

このリリースには、GPT-4.1、GPT-4.1 MINI、およびGPT-4.1 NANOの3つの異なるモデルが含まれており、大規模な言語モデルのランドスケープ内のタスク固有の最適化への動きを示しています。これらのモデルは、ようなユーザー向けインターフェイスをすぐに置き換えません

プロンプト:ChatGptは偽のパスポートを生成しますプロンプト:ChatGptは偽のパスポートを生成しますApr 16, 2025 am 11:35 AM

Chip Giant Nvidiaは、月曜日に、AI Supercomputersの製造を開始すると述べました。これは、大量のデータを処理して複雑なアルゴリズムを実行できるマシンを初めて初めて米国内で実行します。発表は、トランプSI大統領の後に行われます

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境