SlideShare a Scribd company logo
1 of 23
Download to read offline
深層学習 Day3 レポート
小川成
再帰型ニューラルネットワークについて
Section1 再帰型ニューラルネットワークの概念
1-1RNN 全体像
1-1-1RNN とは
●RNN とは?
時系列データに対応可能な、ニューラルネットワークである。
1-1-2 時系列データ
●時系列データとは?
時間的順序を追って一定間隔ごとに観察され,しかも相互に統計的依存関係が認められるよう
なデータの系列
*具体的な時系列データ:音声データ・テキストデータ...etc
1-1-3 RNN について
●RNN の全体像
●RNN の数学的表現
*確認テスト
RNN のネットワークには大きくわけて 3 つの重みがある。1 つは入力から現在の中間層を定義
する際にかけられる重み、1 つは中間層から出力を定義する際にかけられる重みである。残り 1つ
の重みについて説明せよ。
残り一つの重みは、前の中間層から現在の中間層を定義する際にかけられる重みである。
●RNN の特徴とは?
時系列モデルを扱うには、初期の状態と過去の時間 t-1 の状態を保持し、そこから次の時間で
の t を再帰的に求める再帰構造が必要になる。
1-2 BPTT
1-2-1 BPTT とは
●BPTT とは?
RNN においてのパラメータ調整方法の一種であり、誤差逆伝播の一種である。
1-2-2 BPTT の数学的記述
●BPTT の数学的記述1
●BPTT の数学的記述2
*確認テスト
y1 = g(w(out)*z1 + c) c はバイアス
z1 = f(w(in)*x1 + w*z0 + b) bはバイアス
●BPTT の数学的記述3
●BPTT の数学的記述4(パラメータの更新式)
1-2-3BPTT の全体像
Section2) LSTM 全体像(前回の流れと課題全体像のビジョン)
●RNN の課題
時系列を遡れば遡るほど、勾配が消失していく
⇒長い時系列の学習が困難
*解決策:勾配消失の解決方法とは別で、構造自体を変えて解決したものが LSTM
●LSTM の全体像
2-1 CEC
●CEC (constant error carousel)
今までの値を記憶するのみで学習特性はない。
CEC だけでは記憶しかできないが、周りに学習機能を持たせることで制御する。
*勾配消失および勾配爆発の解決方法として、勾配が 1 であれば解決できる。
*課題としては、入力データが時間依存度に関係なく重みが一律になってしまうことが挙げられる
2-2 入力ゲートと出力ゲート
●入力・出力ゲートの役割
入力・出力ゲートを追加することで、それぞれのゲートへの入力値の重みを、重み行列 W,U で可
変可能とする。
⇒これにより CEC の課題を解決できる
2-3 忘却ゲート
●忘却ゲート
CEC には過去の情報が全て保管されているが、CEC 内に残っている情報は不要であっても使わ
れてしまうが、削除することはできない。
⇒忘却ゲートは、どの程度記憶するのかを指示し情報の削除(忘却)を可能にする
忘却ゲート
2-4 覗き穴結合
●覗き穴結合
CEC 自身の値に、重み行列を介して伝播可能にした構造のこと
*CEC の保存されている過去の情報を任意のタイミングで他のノードに伝播させたり、あるいは任
意のタイミングで忘却させることが課題の一つであるが、CEC 自身の値は、ゲート制御に影響を与
えていない⇒覗き穴結合で解決
Section3) GRU
●GRU
従来の LSTM では、パラメータが多数存在していたため、計算負荷が大きかった。しかし、GRU で
は、そのパラメータを大幅に削減し、精度は同等またはそれ以上が望める様になった。
*メリットとしては計算負荷が低いことが挙げられる
⇒これにより LSTM のパラメータ数が多く、計算負荷が高くなる問題を解消できる
●GRU の全体図
*確認テスト
・LSTM と CEC が抱える課題について、それぞれ簡潔に述べよ。
LSTM は、入力ゲート、出力ゲート、忘却ゲート、CEC の4つで構成されているため、パラメ
ータ数が多くなり計算量も多くなる。
CEC は学習能力を持たない。
・LSTM と GRU の違いを簡潔に述べよ。
GRU は LSTM よりパラメータ数が少ない(4→2)。
また、GRU には CEC がない。
Section4) 双方向 RNN
●双方向 RNN
過去の情報だけでなく、未来の情報を加味することで、精度を向上させるためのモデル
*実用例:文章の推敲や、機械翻訳等
RNN での自然言語処理
Section5) Seq2Seq
●Seq2Seq 全体像
●Seq2seq とは
Encoder-Decoder モデルの一種を指す
*具体的な用途: 機械対話や、機械翻訳など
5-1Encoder RNN
●Encoder RNN
ユーザーがインプットしたテキストデータを、単語等のトークンに区切って渡す
*Taking :文章を単語等のトークン毎に分割し、トークンごとの ID に分割する
*Embedding :ID から、そのトークンを表す分散表現ベクトルに変換
*Encoder RNN:ベクトルを順番に RNN に入力していく
●Encoder RNN 処理手順
・vec1 を RNN に入力し、hidden state を出力。この hidden state と次の入力 vec2 をまた RNN に
入力してきた hidden state を出力という流れを繰り返す
・最後の vec を入れたときの hidden state を final state としてとっておく。この final state が thought
vector と呼ばれ、入力した文の意味を表すベクトルとなる
5-2 Decoder RNN
●Decoder RNN
システムがアウトプットデータを、単語等のトークンごとに生成する構造
●Decoder RNN 処理手順
1. Decoder RNN: Encoder RNN の final state (thought vector) から、各 token の生成確率を出
力していく。final state を Decoder RNN の initial state ととして設定し、Embedding を入力。
2. Sampling: 生成確率にもとづいて token をランダムに選ぶ
3. Embedding: 2 で選ばれた token を Embedding して Decoder RNN への次の入力とする
4. Detokenize: 1 から 3 を繰り返し、2 で得られた token を文字列に直す
*確認テスト
下記の選択肢から、seq2seq について説明しているものを選べ。
(1)時刻に関して順方向と逆方向の RNN を構成し、それら 2 つの中間層表現を特徴量として利用
するものである。
(2)RNN を用いた Encoder-Decoder モデルの一種であり、機械翻訳などのモデルに使われる。
(3)構文木などの木構造に対して、隣接単語から表現ベクトル(フレーズ)を作るという演算を再帰
的に行い(重みは共通)、文全体の表現ベクトルを得るニューラルネットワークである。
(4)RNN の一種であり、単純な RNN において問題となる勾配消失問題を CEC とゲートの概念を導
入することで解決したものである。
正解は(2)
5-3 HRED
●Seq2Seq の課題
一問一答しかできない。問に対して文脈がなく、単純に応答するだけ。
●HRED
過去 n-1 個の発話から次の発話を生成する。すなわち、過去の発話を考慮して、文脈のある会
話ができる。
*Seq2seq では、会話の文脈無視で応答がなされたが、HRED では、前の単語の流れに即して応
答されるため、より人間らしい文章が生成される。
(例)
システム:インコかわいいよね。
ユーザー:うん
システム:インコかわいいのわかる。
●HRED の構造
Seq2Seq+ Context RNN
*Context RNN: Encoder のまとめた各文章の系列をまとめて、これまでの会話コンテキスト全体
を表すベクトルに変換する構造
⇒過去の発話の履歴を加味した返答をできる
●HRED の課題
・HRED は確率的な多様性が字面にしかなく、会話の「流れ」のような多様性が無い
⇒同じコンテキスト(発話リスト)を与えられても、答えの内容が毎回会話の流れとしては同じもの
しか出せない
・HRED は短く情報量に乏しい答えをしがちである
⇒短いよくある答えを学ぶ傾向がある。ex)「うん」「そうだね」「・・・」など
5-4VHRED
●VHRED
HRED に、VAE の潜在変数の概念を追加したもの
⇒HRED の課題を、VAE の潜在変数の概念を追加することで解決した
*確認テスト
seq2seq と HRED、HRED と VHRED の違いを簡潔に述べよ。
seq2seq は、系列データの入力から系列データの出力を行うものである。
HRED は、seq2seq と違い過去の文脈を考慮して系列データを出力するものである。
VHRED は、
HRED が出力が短くて相槌程度の回答ばかりになるという問題点を改善し、
よりバ
リエーションをもった人間味のある回答を出力するようになったモデルである。
5-5VAE
5-5-1 オートエンコーダ―
●オートエンコーダ
教師なし学習の一つ。学習時の入力データは訓練データのみで教師データは利用しない
*具体例: MNIST の場合、28x28 の数字の画像を入れて、同じ画像を出力するニューラルネット
ワークということになる
●オートエンコーダ構造
入力データから潜在変数 z に変換するニューラルネットワークを Encoder とし、逆に潜在変数 z を
インプットとして元画像を復元するニューラルネットワークを Decoder とする
*メリットは次元削減が行えること
*z の次元が入力データより小さい場合、次元削減とみなすことができる
5-5-2 VAE
●VAE
データを潜在変数 z の確率分布という構造に押し込めることを可能にする。
*通常のオートエンコーダーの場合、何かしら潜在変数 z にデータを押し込めているものの、その
構造がどのような状態かわからない
●VAE 構造
*確認テスト
VAE に関する下記の説明文中の空欄に当てはまる言葉を答えよ。
自己符号化器の潜在変数に____を導入したもの。
確率分布
Section6) Word2vec
●課題
RNN では、単語のような可変長の文字列を NN に与えることはできない。固定長形式で単語を表
す必要がある
●word2vec
学習データからボキャブラリを作成する
*単語などの分散表現を行う 2 層の NN
*Skip-gram と CBOW を取り入れている
Skip-gram は中心語が入力、周りの単語が出力
CBOW は周りの単語が入力、中心語が出力
*メリット:大規模データの分散表現の学習が、現実的な計算速度とメモリ量で実現可能にした。
Section7) Attention Mechanism
●課題
・seq2seq の問題は長い文章への対応が難しい
・seq2seq では、2 単語でも、100 単語でも、固定次元ベクトルの中に入力しなければならない
⇒解決策: 文章が長くなるほどそのシーケンスの内部表現の次元も大きくなっていく仕組みが必
要になる
●Attention Mechanism
入力と出力のどの単語が関連しているのか」の関連度を学習する仕組み。
*確認テスト
RNN と word2vec、seq2seq と Attention の違いを簡潔に述べよ。
RNN は時系列データを扱う NN。
Word2vec は単語を 2 層の NN で分散表現する。
Seq2seq は、時系列データの入力から別の時系列データの出力を行う。
Attention は時系列データの内容につき関連性に重みを持たせる
準備
Googleドライブのマウント
from google.colab import drive
drive.mount('/content/drive')
import sys
sys.path.append('/content/drive/My Drive/DNN_code_colab_lesson_3_4')
バイナリ加算
simple RNN
import numpy as np
from common import functions
import matplotlib.pyplot as plt
# def d_tanh(x):
# データを用意
# 2進数の桁数
binary_dim = 8
# 最大値 + 1
largest_number = pow(2, binary_dim)
# largest_numberまで2進数を用意
binary = np.unpackbits(np.array([range(largest_number)],dtype=np.uint8).T,axis=1)
input_layer_size = 2
hidden_layer_size = 16
output_layer_size = 1
weight_init_std = 1
learning_rate = 0.1
iters_num = 10000
plot_interval = 100
# ウェイト初期化 (バイアスは簡単のため省略)
W_in = weight_init_std * np.random.randn(input_layer_size, hidden_layer_size)
W_out = weight_init_std * np.random.randn(hidden_layer_size, output_layer_size)
W = weight_init_std * np.random.randn(hidden_layer_size, hidden_layer_size)
# X i
# Xavier
# He
# 勾配
W_in_grad = np.zeros_like(W_in)
W_out_grad = np.zeros_like(W_out)
W_grad = np.zeros_like(W)
u = np.zeros((hidden_layer_size, binary_dim + 1))
z = np.zeros((hidden_layer_size, binary_dim + 1))
y = np.zeros((output_layer_size, binary_dim))
delta_out = np.zeros((output_layer_size, binary_dim))
delta = np.zeros((hidden_layer_size, binary_dim + 1))
all_losses = []
for i in range(iters_num):
    
    # A, B初期化 (a + b = d)
    a_int = np.random.randint(largest_number/2)
    a_bin = binary[a_int] # binary encoding
    b_int = np.random.randint(largest_number/2)
    b_bin = binary[b_int] # binary encoding
    
    # 正解データ
    d_int = a_int + b_int
    d_bin = binary[d_int]
    
    # 出力バイナリ
    out_bin = np.zeros_like(d_bin)
    
    # 時系列全体の誤差
    all_loss = 0    
    
    # 時系列ループ
    for t in range(binary_dim):
        # 入力値
        X = np.array([a_bin[ - t - 1], b_bin[ - t - 1]]).reshape(1, -1)
        # 時刻tにおける正解データ
        dd = np.array([d_bin[binary_dim - t - 1]])
        
        u[:,t+1] = np.dot(X, W_in) + np.dot(z[:,t].reshape(1, -1), W)
        z[:,t+1] = functions.sigmoid(u[:,t+1])
        y[:,t] = functions.sigmoid(np.dot(z[:,t+1].reshape(1, -1), W_out))
        #誤差
        loss = functions.mean_squared_error(dd, y[:,t])
        
d lt t[: t] f ti d d (dd [: t]) * f ti d i id( [: t])
        delta_out[:,t] = functions.d_mean_squared_error(dd, y[:,t]) * functions.d_sigmoid(y[:,t])   
        
        all_loss += loss
        out_bin[binary_dim - t - 1] = np.round(y[:,t])
    
    
    for t in range(binary_dim)[::-1]:
        X = np.array([a_bin[-t-1],b_bin[-t-1]]).reshape(1, -1)        
        delta[:,t] = (np.dot(delta[:,t+1].T, W.T) + np.dot(delta_out[:,t].T, W_out.T)) * functions.
        # 勾配更新
        W_out_grad += np.dot(z[:,t+1].reshape(-1,1), delta_out[:,t].reshape(-1,1))
        W_grad += np.dot(z[:,t].reshape(-1,1), delta[:,t].reshape(1,-1))
        W_in_grad += np.dot(X.T, delta[:,t].reshape(1,-1))
    
    # 勾配適用
    W_in -= learning_rate * W_in_grad
    W_out -= learning_rate * W_out_grad
    W -= learning_rate * W_grad
    
    W_in_grad *= 0
    W_out_grad *= 0
    W_grad *= 0
    
    if(i % plot_interval == 0):
        all_losses.append(all_loss)        
        print("iters:" + str(i))
        print("Loss:" + str(all_loss))
        print("Pred:" + str(out_bin))
        print("True:" + str(d_bin))
        out_int = 0
        for index,x in enumerate(reversed(out_bin)):
            out_int += x * pow(2, index)
        print(str(a_int) + " + " + str(b_int) + " = " + str(out_int))
        print("------------")
lists = range(0, iters_num, plot_interval)
plt.plot(lists, all_losses, label="loss")
plt.show()
準備
Googleドライブのマウント
from google.colab import drive
drive.mount('/content/drive')
import sys
sys.path.append('/content/drive/My Drive/DNN_code_colab_lesson_3_4')
バイナリ加算
simple RNN after
import numpy as np
from common import functions
import matplotlib.pyplot as plt
def d_tanh(x):
    return 1/(np.cosh(x) ** 2)
# データを用意
# 2進数の桁数
binary_dim = 8
# 最大値 + 1
largest_number = pow(2, binary_dim)
# largest_numberまで2進数を用意
binary = np.unpackbits(np.array([range(largest_number)],dtype=np.uint8).T,axis=1)
input_layer_size = 2
hidden_layer_size = 16
output_layer_size = 1
weight_init_std = 1
learning_rate = 0.1
iters_num = 10000
plot_interval = 100
# ウェイト初期化 (バイアスは簡単のため省略)
W_in = weight_init_std * np.random.randn(input_layer_size, hidden_layer_size)
W_out = weight_init_std * np.random.randn(hidden_layer_size, output_layer_size)
W = weight_init_std * np.random.randn(hidden_layer_size, hidden_layer_size)
# Xavier
# W i d d (i t l i hidd l i ) / ( t(i t l i ))
# W_in = np.random.randn(input_layer_size, hidden_layer_size) / (np.sqrt(input_layer_size))
# W_out = np.random.randn(hidden_layer_size, output_layer_size) / (np.sqrt(hidden_layer_size))
# W = np.random.randn(hidden_layer_size, hidden_layer_size) / (np.sqrt(hidden_layer_size))
# He
# W_in = np.random.randn(input_layer_size, hidden_layer_size) / (np.sqrt(input_layer_size)) * np.sq
# W_out = np.random.randn(hidden_layer_size, output_layer_size) / (np.sqrt(hidden_layer_size)) * np
# W = np.random.randn(hidden_layer_size, hidden_layer_size) / (np.sqrt(hidden_layer_size)) * np.sqr
# 勾配
W_in_grad = np.zeros_like(W_in)
W_out_grad = np.zeros_like(W_out)
W_grad = np.zeros_like(W)
u = np.zeros((hidden_layer_size, binary_dim + 1))
z = np.zeros((hidden_layer_size, binary_dim + 1))
y = np.zeros((output_layer_size, binary_dim))
delta_out = np.zeros((output_layer_size, binary_dim))
delta = np.zeros((hidden_layer_size, binary_dim + 1))
all_losses = []
for i in range(iters_num):
    
    # A, B初期化 (a + b = d)
    a_int = np.random.randint(largest_number/2)
    a_bin = binary[a_int] # binary encoding
    b_int = np.random.randint(largest_number/2)
    b_bin = binary[b_int] # binary encoding
    
    # 正解データ
    d_int = a_int + b_int
    d_bin = binary[d_int]
    
    # 出力バイナリ
    out_bin = np.zeros_like(d_bin)
    
    # 時系列全体の誤差
    all_loss = 0    
    
    # 時系列ループ
    for t in range(binary_dim):
        # 入力値
        X = np.array([a_bin[ - t - 1], b_bin[ - t - 1]]).reshape(1, -1)
        # 時刻tにおける正解データ
        dd = np.array([d_bin[binary_dim - t - 1]])
        
        u[:,t+1] = np.dot(X, W_in) + np.dot(z[:,t].reshape(1, -1), W)
        z[:,t+1] = functions.sigmoid(u[:,t+1])
#         z[:,t+1] = functions.relu(u[:,t+1])
#         z[:,t+1] = np.tanh(u[:,t+1])    
        y[:,t] = functions.sigmoid(np.dot(z[:,t+1].reshape(1, -1), W_out))
#誤差
        #誤差
        loss = functions.mean_squared_error(dd, y[:,t])
        
        delta_out[:,t] = functions.d_mean_squared_error(dd, y[:,t]) * functions.d_sigmoid(y[:,t])   
        
        all_loss += loss
        out_bin[binary_dim - t - 1] = np.round(y[:,t])
    
    
    for t in range(binary_dim)[::-1]:
        X = np.array([a_bin[-t-1],b_bin[-t-1]]).reshape(1, -1)        
        delta[:,t] = (np.dot(delta[:,t+1].T, W.T) + np.dot(delta_out[:,t].T, W_out.T)) * functions.
#         delta[:,t] = (np.dot(delta[:,t+1].T, W.T) + np.dot(delta_out[:,t].T, W_out.T)) * function
#         delta[:,t] = (np.dot(delta[:,t+1].T, W.T) + np.dot(delta_out[:,t].T, W_out.T)) * d_tanh(u
        # 勾配更新
        W_out_grad += np.dot(z[:,t+1].reshape(-1,1), delta_out[:,t].reshape(-1,1))
        W_grad += np.dot(z[:,t].reshape(-1,1), delta[:,t].reshape(1,-1))
        W_in_grad += np.dot(X.T, delta[:,t].reshape(1,-1))
    
    # 勾配適用
    W_in -= learning_rate * W_in_grad
    W_out -= learning_rate * W_out_grad
    W -= learning_rate * W_grad
    
    W_in_grad *= 0
    W_out_grad *= 0
    W_grad *= 0
    
    if(i % plot_interval == 0):
        all_losses.append(all_loss)        
        print("iters:" + str(i))
        print("Loss:" + str(all_loss))
        print("Pred:" + str(out_bin))
        print("True:" + str(d_bin))
        out_int = 0
        for index,x in enumerate(reversed(out_bin)):
            out_int += x * pow(2, index)
        print(str(a_int) + " + " + str(b_int) + " = " + str(out_int))
        print("------------")
lists = range(0, iters_num, plot_interval)
plt.plot(lists, all_losses, label="loss")
plt.show()
深層学習レポートDay3(小川成)

More Related Content

What's hot

VLDB'10勉強会 -Session 2-
VLDB'10勉強会 -Session 2-VLDB'10勉強会 -Session 2-
VLDB'10勉強会 -Session 2-
Takeshi Yamamuro
 
パターン認識02 k平均法ver2.0
パターン認識02 k平均法ver2.0パターン認識02 k平均法ver2.0
パターン認識02 k平均法ver2.0
sleipnir002
 

What's hot (14)

Efficient Det
Efficient DetEfficient Det
Efficient Det
 
深層学習 勉強会 第1回資料(作成途中)
深層学習 勉強会 第1回資料(作成途中)深層学習 勉強会 第1回資料(作成途中)
深層学習 勉強会 第1回資料(作成途中)
 
Disconnected Recurrent Neural Networks for Text Categorization
Disconnected Recurrent Neural Networks for Text CategorizationDisconnected Recurrent Neural Networks for Text Categorization
Disconnected Recurrent Neural Networks for Text Categorization
 
VLDB'10勉強会 -Session 2-
VLDB'10勉強会 -Session 2-VLDB'10勉強会 -Session 2-
VLDB'10勉強会 -Session 2-
 
ラビットチャレンジ Day3 day4レポート
ラビットチャレンジ Day3 day4レポートラビットチャレンジ Day3 day4レポート
ラビットチャレンジ Day3 day4レポート
 
Icml2019 kyoto ohno_ver20190805
Icml2019 kyoto ohno_ver20190805Icml2019 kyoto ohno_ver20190805
Icml2019 kyoto ohno_ver20190805
 
ma52009id419
ma52009id419ma52009id419
ma52009id419
 
[DL輪読会]QUASI-RECURRENT NEURAL NETWORKS
[DL輪読会]QUASI-RECURRENT NEURAL NETWORKS[DL輪読会]QUASI-RECURRENT NEURAL NETWORKS
[DL輪読会]QUASI-RECURRENT NEURAL NETWORKS
 
パターン認識02 k平均法ver2.0
パターン認識02 k平均法ver2.0パターン認識02 k平均法ver2.0
パターン認識02 k平均法ver2.0
 
Hybrid computing using a neural network with dynamic external memory
Hybrid computing using a neural network with dynamic external memoryHybrid computing using a neural network with dynamic external memory
Hybrid computing using a neural network with dynamic external memory
 
PyTorch, PixyzによるGenerative Query Networkの実装
PyTorch, PixyzによるGenerative Query Networkの実装PyTorch, PixyzによるGenerative Query Networkの実装
PyTorch, PixyzによるGenerative Query Networkの実装
 
はじパタLT3
はじパタLT3はじパタLT3
はじパタLT3
 
深層学習②
深層学習②深層学習②
深層学習②
 
[DL輪読会]Convolutional Sequence to Sequence Learning
[DL輪読会]Convolutional Sequence to Sequence Learning[DL輪読会]Convolutional Sequence to Sequence Learning
[DL輪読会]Convolutional Sequence to Sequence Learning
 

Recently uploaded

Recently uploaded (10)

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 

深層学習レポートDay3(小川成)