数理脳科学(2021)
YRM71 数理脳科学(2021) 前期金曜 第7・8限
情報機械としての脳の本質を探す
https://cognitivesciencesociety.org/wp-content/uploads/2019/01/DERumelhart.png
All the knowledge is in the connections
https://upload.wikimedia.org/wikipedia/commons/thumb/6/61/Christoph_von_der_Malsburg_2.jpg/220px-Christoph_von_der_Malsburg_2.jpghttps://upload.wikimedia.org/wikipedia/commons/thumb/c/c3/Teuvo-Kohonen-2.jpg/220px-Teuvo-Kohonen-2.jpg
左から
https://gyazo.com/b69e71d9996d48799c30448a9a96a9e0
2021.7.30
第15回
A-527 対面講義
「数理脳科学」演習問題
自動微分:PyTorch を使った例
code:xxx
import torch
import numpy as np
import torch.nn as nn
import torch.optim as optim
import matplotlib.pyplot as plt
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.fc1 = torch.nn.Linear(2, 2, bias=True) # fc: fully connected
self.fc2 = torch.nn.Linear(2, 1, bias=True)
def forward(self, x):
x = F.sigmoid(self.fc1(x))
x = F.sigmoid(self.fc2(x))
return x
def main():
inputs = torch.tensor(0, 0], 0, 1, 1, 0, [1, 1, dtype=torch.float32) targets = torch.tensor(0], 1, 1, [0, dtype=torch.float32) epochs = 5000
net = Net()
# net.train() # train()とeval()で学習/推論のモードの切り替え. Dropoutなどの挙動と関係あり.
# create an optimizer
optimizer = torch.optim.SGD(net.parameters(), lr=0.08, momentum=0.9)
criterion = torch.nn.MSELoss()
history_loss = []
for epoch in range(epochs):
optimizer.zero_grad() # zero the gradient buffers
outputs = net(inputs)
loss = criterion(outputs, targets)
loss.backward()
optimizer.step() # Does the update
# save loss of this epoch
history_loss.append( loss.data.numpy().tolist() ) tolist()は、リスト型のオブジェクトを返す
print(loss)
print(loss.data)
print(loss.data.numpy())
outputs = net(inputs)
print(outputs)
plt.figure()
plt.plot(range(1,epochs+1),history_loss,color='blue',linestyle='-',label='train_loss')
plt.legend()
plt.grid()
if __name__ == "__main__":
main()
2021.7.16
第14回
A-527 対面講義
確率的生成モデル.レポート課題講評
2021.7.2
第12回
A-527 対面講義
ボルツマンマシン.レポート課題講評
2021.6.25]
第10回
A-527 対面講義
2021.6.18
第10回
A-527 対面講義
自己組織化モデル.レポート課題講評
山口君
ソフトウェア開発の話題
https://gyazo.com/a941c3e8485e81390382e96ffbdd7c73https://gyazo.com/1092821b6442c053319f42ad1c40beaf
https://gyazo.com/066791db703e17996f6a30e7cf97787a
のこり5回:第11回から第15回
確率的生成モデル
ボルツマンマシン
数理脳科学の問題
結びつけ問題(Biding Problem)
Invariance vs Selectivity Dilemma
ニューロンのモデル:樹状突起の構造に秘密が隠されている(?)
短期・長期記憶の情報表現
$ \dfrac{1}{r^3} の法則
脳と「大数の法則」(a law of large numbers)
脳と「大偏差原理」(large deviation princple, LDP )
カバーしていない(最近出版された本や、インターネット上に記事がかなりあるもの→それぞれ自分で勉強できる)
GAN (Genera tive Adversarial Networks)
LSTM (Long Short Term Memory)
CNN (Convolutional Neural Network)
VAE (Variational Autoencoder)
Reinforcement Learning
Q-learning
TD-learning (temporal difference learning)
DQN (Deep Q-Network)
Generative Query Network (GQN)
Capsule
ツール:PyTorch, Tensorflow
Generative Deep Learning
VAE, GAN, LSTM をカバー.Tensorflow を使用.
https://gyazo.com/1409408bc7b2f6173953b1170c6eae46https://www.oreilly.co.jp/books/images/picture_large978-4-87311-920-5.jpeg
PyTorch実践入門 ディープラーニングの基礎から実装へ
Deep Learning with PyTorch
CNN をカバー.PyTotch を使用.
https://images-na.ssl-images-amazon.com/images/I/411ruZISG3L._SX397_BO1,204,203,200_.jpghttps://book.mynavi.jp/files/topics/120263_ext_06_0.jpg
CNN でよく使う用語は知っておく
kernel_size
padding
https://www.hanmoto.com/bd/img/9784863454934.jpg?2021-05-17T17%3A23%3A13%2B09%3A00
p.31
日本の大学で行われている研究とアメリカの大学で行われている研究を比較すると,日本では博士論文よりも修士論文が多数を占めていることもあって応用研究が多く,アメリカの方が基礎的な研究が多い. 日本では欧米で発見・発明された新しい知見や技術を,具体的な問題に適用してみるという研究が多い. これには日本の企業が基礎研究をやらなくなってしまった背景から,日本の文科省.経産省などが「産官学共同」を奨励し,この種の研究に研究費が配分されやすくなっていることが後押ししていると考えられる.アメリカではこの種の研究は企業でやるもので,学生の教育として研究でやるべきものではないと考えられている.
p.99
大学はすぐには役に立たないかもしれない基礎研究をするのが役目であり,その基礎研究が役に立ちそうだと判断したときに社会実装するのが企業の役目である.多くの分野で基礎研究から製品開発までの時間が格段に短くなり,競争が激しくなってきたが,研究成果は論文として発表されているから,企業の技術者がちゃんと勉強していれば,どのような使えそうな技術があるかわかるはずである.
すぐにはなんの役にも立ちそうにないのが基礎研究である.基礎研究は相当の覚悟がないとできない.大学がすぐに役に立つことを重視していたら基礎研究は育たない.
2021.5.28
A-527 対面講義
連想記憶モデル.レポート課題講評
2021.5.21
第6回の講義(5/21金)はオンデマンド型で実施します.
動画を視聴してください.
レポート課題2の提出(締切:5/28金)で,出席扱いにします.
5/28金は,A-527 で対面講義で実施予定です.
2021.5.14
A-527 対面講義
2021.4.9
どんな講義か。どんな課題をこなす必要があるか。全体の紹介。
成績評価:レポート 100%
コンピュータプログラムを書く
Project 0 (これをこなすのが大変だと、あとも大変)
Web Pages
GitHub:
Topics Covered
本物の脳,人工的なニューラルネットワーク
Real and Artifitial Neural Networks
古典:ニューラルネット研究の歴史.それぞれのモデルの定式化
例からの学習(教師あり学習)
連想記憶モデル
自己組織化のモデル (教師なし学習),自己組織化マップ(SOM)
ボルツマンマシン
強化学習
脳とコンピュータ
脳
ニューロン(神経細胞)
そのネットワーク
脳の本質を探る2つの方向
ミクロの方向(分子機械、脳の分子機構)
脳の設計図:DNA分子に符号化されて遺伝子の中に書き込まれている
遺伝子の構造やその発現機構を調べる→脳の作り方がわかる
情報機械の本質(情報表現と計算方式)
ハードウェアから直接にわかるものではない
外界の情報を内部の興奮状態としてどのように表現するか
記憶をどのような形で表現する
この表現をどのように計算し、認知、思考、運動制御の情報処理過程を実行するか
脳を支える原理
いくつかの基本原理の組み合わせ
情報処理の直列原理と並列原理
直列情報処理の原理
並列情報処理の原理
協調的相互作用
抑制競合的相互作用
興奮状態(多数の要素の相互作用)のダイナミクス
生物は進化の過程で並列情報処理を選ぶ → 人間の脳
人工知能、認知科学、神経科学、
https://images-na.ssl-images-amazon.com/images/I/41dUWl+rMKL._SX340_BO1,204,203,200_.jpghttps://m.media-amazon.com/images/I/51FXKUpN69L._SY346_.jpghttps://images-na.ssl-images-amazon.com/images/I/51ZGhn1iNHL._SX353_BO1,204,203,200_.jpg
https://images-na.ssl-images-amazon.com/images/I/412fn4cDP3L._SX351_BO1,204,203,200_.jpg
Neural Netowrk Models
2つのダイナミックス
活動のダイナミックス (はやい)
学習(重み)のダイナミックス (ゆっくり)
微分方程式をイメージすればよい.重みの空間をイメージ.
ランダムな初期値
動いていく.
どこかで止まる → (安定平衡状態に収束).
Back-propagation
学習アルゴリズムを導出
コードをゼロから書く。
XOR 問題
例からの学習(教師あり学習,パーセプトロンなど)\cite{rumelhart86b,amari89a}}
【問題設定】
入力とそれに対する望ましい出力(教師信号)のペア$ (x^1, y^1),(x^2, y^2), \cdots (x^m, y^m) が多数($ m 個)与えられているとする.ここで $ (x, y) はある確率分布 $ \Pr(x,y) にしたがっているとする.このとき $ x^\alpha を入力すると, $ y^\alpha を出力するような回路を作りたい ($ \alpha=1,2,\cdots,m ).目的は,与えられた例題に対してだけではなく,望ましい出力が与えられていない未知の入力 $ x に対しても,正しい答え $ y を出力できる回路を作ることである.「問題の本質」がどこにあるのか分からない場合に使える.
Least-Squares Learning and Regression
A typical learning problem might involve a feature or input vector $ x, a response vector $ y, and the goal of learning to predict $ y from $ x, where the pair $ (x, y) obeys some unknown joint probability distribution, $ P.
A training set $ (x_1, y_1),\cdots, (x_n, y_n) is a collection of observed $ (x, y) pairs containing the desired response $ y for each input $ x.
Usually these samples are independently drawn from $ P, though many variations are possible.
For clearer exposition, we will take $ y = y to be one-dimensional, although our remarks apply more generally.
The learning problem is to construct a function (or "machine") $ f(x) based on the data $ (x_1, y_1), \cdots , (x_n, y_n), so that $ f(x) approximates the desired response $ y.
Typically, $ f is chosen to minimize some cost functional.
For example, in feedforward networks (Rumelhart et al. 1986a,b), one usually forms the sum of observed squared errors,
$ \sum_{i=1}^N (y_i - f(x) )^2
and $ f is chosen to make this sum as small as possible. Of course $ f is really parameterized, usually by idealized "synaptic weights."
(These sentences are from Geman et al. 1992)
単純な課題でも,自分でゼロからコードを書いて実験してみると,いくつもの疑問が湧いて出てくる.
要点
単純な課題でも,自分でゼロからコードを書いて実験してみると,いくつもの疑問が湧いて出てくる.
隠れ層の素子数2では,結合係数の初期値を変えて1000通り試しても,このような回路は発見できない?
本当に発見できない?
「学習できない」とは?
「学習が終わらない」→「学習が終わる」とは?
プログラムのバグ?
横軸に時間 t,縦軸に E をとり,描いてみる.E が減っていけば,とりあえず OK.
結合係数の初期値を論文に書かれている値を設定する.壊れていけば(Eの値が上昇?),どこか間違えている.
https://gyazo.com/031bde631d22496c9da8bfbb4483bf06https://gyazo.com/18e80d7dc71fda10f598af3e68767841
https://gyazo.com/1b4aac2bd9281b6af9ee984b4cf2c52d
Rubyで数独:AIプログラミング入門(近代科学社,佐藤理史 著)
https://gyazo.com/2823139fcc173fbf4603b20fb2457234