March 2025
Intermediate to advanced
252 pages
3h 40m
Japanese
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
ニューラルネットワークやディープラーニングについて学ぼうとすると、ブログ記事から質の異なるMOOC(CourseraやUdacityで提供されているような大規模公開オンライン講座)、さらには書籍まで、豊富なリソースに出会ってきたことだろう。しかし、もしあなたがこの序文を読み取っているのだとしたら、おそらくあなたが出会ったニューラルネットワークの説明は、どれもどこか欠けているのだろう。私も学び始めたときに同じことを発見した。さまざまな説明は、盲人が象のさまざまな部分を説明しているようなもので、全体を説明しているものはなかった。それが、私がこの本を書くことになった理由である。
ニューラルネットワークに関する既存のリソースは、そのほとんどが2つのカテゴリーに分類される。概念的で数学的なものもあり、ニューラルネットワークの説明で発見されるような、両端に矢印のついた線で結ばれた円を描いたものと、"理論を理解する "ための、何が起こっているのかについての広範な数学的説明の両方が含まれている。その典型的な例が、イアン・グッドフェローらによる非常に優れた書籍『Deep Learning』(MIT Press)である。
他のリソースには、実行すると損失値が時間とともに減少し、ニューラルネットワークが "学習 "しているように見えるコードのブロックが密集している。例えば、PyTorchのドキュメントにある以下の例は、確かにランダムに生成されたデータに対してシンプルなニューラルネットワークを定義し、学習させている:
# N is batch size; D_in is input dimension;# H is hidden dimension; D_out is output dimension.N,D_in,H,D_out=64,1000,100,10# Create random input and output datax=torch.randn(N,D_in,device=device,dtype=dtype)y=torch.randn(N,D_out,device=device,dtype=dtype)# Randomly initialize weightsw1=torch.randn(D_in,H,device=device,dtype=dtype)w2=torch.randn(H,D_out,device=device,dtype=dtype)learning_rate=1e-6fortinrange(500):# Forward pass: compute predicted yh=x.mm(w1)h_relu=h.clamp(min=0)y_pred=h_relu.mm(w2)# Compute and print lossloss=(y_pred-y).pow(2).sum().item()(t,loss)# Backprop to compute gradients of w1 and w2 with respect to lossgrad_y_pred=2.0*(y_pred-y)grad_w2=h_relu.t().mm(grad_y_pred)