0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

デジタル化が加速したschool【紙芝居】

Posted at

【はじめに】

社会の複雑化・高度化、そしてAIによる知識のコモディティ化が進む中で、いま求められているのは、道具を使いこなして課題を解決できる人材です。
同時に、教育のデジタル化に対応し、コミュニケーション能力を育む力も重要になっています。では、それをどう育てていけばよいのでしょうか?
そのヒントは「モデルベース」でシチュエーションを再現しながら、実践的に学んでいくアプローチにあります。

ここから“紙芝居”形式でソリューションストーリーが展開します。
こうした形式が苦手な方は、そっとブラウザを閉じていただいても大丈夫です。

【紙芝居スタート】

先生:「チームミーティングを開始します!リソース状況と役割を確認し、提案に向けたアウトプットを最終確認してください。本日のミッションは、課題解決トータルソリューションの提示です!」

生徒たち:「はい!ヒアリング内容をもとに、業務プロセス全体を見通した提案を準備します!」

先生:「田中くん、資料出せる?パワポの最新版、関数モデルにAIロジック載せたやつ。お客様に“使える提案”って思ってもらえるかがポイントだからね。」

田中:
「本提案では、インプットとアウトプットの関係を視覚化し、関数ベースでの入出力設計を行っています。
加えて、成果創出に直結するゲイン設計を採用し、AIには重みとバイアスで調整可能なニューラルネットワーク型関数モデルを使用しています。
さらに、活性化関数を組み込むことで、AIとの効果的なコミュニケーションを促進します。」

説明に使用されるPythonコード

import numpy as np
import matplotlib.pyplot as plt

# ① 出力電圧 = K × 入力電圧(フィードバックゲインKを計算)

# 入力電圧 (0から10Vまで)
input_voltage = np.linspace(0, 10, 100)

# フィードバックゲイン K = A / (1 + βA)
A = 1000000
beta = 0.5
K = A / (1 + beta * A)

# 出力電圧 = K × 入力電圧
output_voltage = K * input_voltage

# KをdBで表示
K_dB = 20 * np.log10(K)

# プロット
plt.figure(figsize=(10,6))
plt.plot(input_voltage, output_voltage, label=f'Output Voltage = {K} * Input Voltage', color='b')
plt.title(f'Output Voltage vs Input Voltage (K = {K}, {K_dB:.2f} dB)')
plt.xlabel('Input Voltage (V)')
plt.ylabel('Output Voltage (V)')
plt.grid(True)
plt.legend()
plt.show()

# ② 目的関数 = 重み × 特徴量入力 + バイアス(プロット)

# 重みとバイアスを定義
weights = np.array([1, 2, -0.5])  # 3つの特徴量に対する重み
bias = 1  # バイアス

# 特徴量入力 (例: 3つの特徴量)
feature_input = np.linspace(0, 10, 100)

# 目的関数
output_function = weights[0] * feature_input + bias

# プロット
plt.figure(figsize=(10,6))
plt.plot(feature_input, output_function, label='Objective Function')
plt.title('Objective Function vs Feature Input')
plt.xlabel('Feature Input')
plt.ylabel('Objective Function')
plt.legend()
plt.grid(True)
plt.show()

# ③ ニューラルネットワークと活性化関数、自動微分とバックプロパゲーション

import torch
import torch.nn as nn
import torch.optim as optim

# シンプルなニューラルネットワークを定義
class SimpleNN(nn.Module):
    def __init__(self):
        super(SimpleNN, self).__init__()
        self.fc1 = nn.Linear(3, 5)  # 3入力、5ノード
        self.fc2 = nn.Linear(5, 1)  # 5ノードから1出力
        self.activation = nn.ReLU()  # ReLU活性化関数

    def forward(self, x):
        x = self.fc1(x)
        x = self.activation(x)
        x = self.fc2(x)
        return x

# 入力データとターゲット
input_data = torch.tensor([[1.0, 2.0, 3.0]], requires_grad=True)  # 1つのサンプル
target = torch.tensor([[10.0]])

# モデル、損失関数、オプティマイザーを定義
model = SimpleNN()
criterion = nn.MSELoss()  # 平均二乗誤差
optimizer = optim.SGD(model.parameters(), lr=0.01)

# 学習ループ(バックプロパゲーション)
epochs = 1000
for epoch in range(epochs):
    optimizer.zero_grad()  # 勾配の初期化

    # 順伝播
    output = model(input_data)

    # 損失計算
    loss = criterion(output, target)

    # 逆伝播
    loss.backward()

    # パラメータの更新
    optimizer.step()

    # 途中経過表示
    if epoch % 100 == 0:
        print(f'Epoch [{epoch}/{epochs}], Loss: {loss.item():.4f}')

# 最終結果
print(f'Final output: {output.item():.4f}')
print(f'Final model parameters: {list(model.parameters())}')

(提案終了)

先生:「良い提案です!ただ、活性化関数がどのようにAIコミュニケーションを加速させるのか、もう少し具体的な説明を加えるとさらに説得力が増します。例えばどのような場面で効果的なのかを触れてみてください。」

まとめ

いかがでしたか?デジタルコミュニケーションやAIが進みすぎて、もし学校がそんなふうになったら…ちょっと考えるだけで嫌ですね。今日は少し冷笑っぽくなってしまったかもしれません。それでは、また。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?