- ブログ
ところで機械学習を始めてみませんか?
2023.07.28 Fri
こんにちは!! ホエールテック(WT)開発担当のsoobeです。
いきなりですが、推薦システムや画像認識とか組めたらかっこいいですよね。
それらは機械学習が可能にしてくれるそうです。
機械学習の世界には、魅力的な可能性が広がっています。推薦システムでは、私たちの好みや興味を理解し、新たな発見を提供してくれるかもしれません。例えば、映画や音楽のオススメ、商品の候補など、私たちの生活を豊かにする情報を提供してくれるのです。
一方、画像認識は、写真や映像の中から物体やシーンを自動的に識別できる技術です。これにより、自動運転車の安全性向上や、医療診断のサポート、さらには監視カメラの映像解析など、多岐にわたる分野での応用が期待されています。
これらの技術は、機械学習によって成り立っています。データからパターンを学び、予測や識別を行うことで、人間の知的な処理を模倣するのです。もし興味を持ったなら、ぜひ一歩踏み出してみてください。機械学習の入り口へ覗くことで、新たな可能性が拓けるかもしれませんよ。一緒に未知の世界を探求していきましょう。
基本的な機械学習アプローチ
単純な機械学習の例を使って説明します。
単純な機械学習では、直線の方程式 (y = mx + b) を使用して、入力値に対してポジティブなクラスかネガティブなクラスか判定とかします。

上図は、上領域なら、ポジティブ、下領域ならネガティブの判定です。
機械学習では、与えられたトレーニングデータを使用して、モデルのパラメータである重みとバイアスを学習します。この学習によって、入力値に対してより適切なポジティブまたはネガティブな判定を行うための最適な重みとバイアスを見つけることができます。

具体的には、入力データと対応する正解ラベルが与えられたトレーニングデータを用いて、モデルが予測した結果と正解ラベルとの誤差を最小化するように重みとバイアスを調整していきます。この過程を繰り返すことで、モデルはトレーニングデータに適合するように更新されていきます。
入力データと正解ラベルのペアを使用してモデルを学習させ、未知のデータに対して予測や判定を行う、という流れが機械学習のアプローチです。

ニューラルネットワークとは?
ニューラルネットワークは、より複雑な境界線を実現することができる構造を持っていて、複数の層から構成される機械学習モデルです。
典型的なニューラルネットワークは、入力層、隠れ層、そして出力層からなる複数の層を持ちます。

各層には重みとバイアスというパラメータが存在します。

これらの重みとバイアスは、複雑な境界線を描くのに役立ちます。
ニューラルネットワークの学習も、トレーニングデータを使用して重みとバイアスを調整していきます。これにより、モデルは入力に対して適切な出力を予測できるようになります。
ニューラルネットワークの学習(誤差逆伝播法)は、各層に重みとバイアスの沢山あるため、それらを最適な値に近づけていくための計算が複雑です。
ニューラルネットワークの勉強で鬼門となる箇所は、誤差逆伝播法だと思われますので、できるだけわかりやすい教材を使いたいですね。
ニューラルネットワークの学習におすすめしたい本です

https://book.mynavi.jp/ec/products/detail/id=104970
私は、上記の本を使って勉強をしています。
対話形式で、順番を追って説明をしてくれるため、無理なく勉強できます。
誤差逆伝播法についても詳しく載っていますので、興味のある方は、ぜひ読んでみてください。
最後に
Docker + Python + jupyter の開発環境を共有します。
私のローカル: Mac, Docker Desktop, Visual Studio Code

↑zipの中
Docker Desktopを起動、「Engine running」になっていることを各確認してください。

プロジェクト直下でターミナルを起動し、コマンドを実行してください。
docker build -t my_jupyter_image .
docker run -d -p 8888:8888 –name my_jupyter_container -v $(pwd)/workspace:/workspace my_jupyter_image
お好きなブラウザでhttp://localhost:8888を開いてください。
ニューラルネットワーク.ipynbを選択してください。

Runをクリックしてください。

こんな感じで、Pythonを実行することができます。
Docker + Python + jupyter は便利ですね!
それでは、楽しいニューラルネットワークライフを!!