FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Pythonで機械学習の進捗 §2-1


本の2章から、いよいよアルゴリズムに触れます。

2.1で「パーセプトロン」の紹介がされます。
パーセプトロンが何であるかの説明は本を見てもらうとして・・・
私の感想を中心にまとめます。

パーセプトロンの「信号」の考え方は、すんなり理解できました。
私はドミノ倒しを想像し、次々に伝わっているというイメージを持ちました。
数学でも関数列と似ていると感じました。

それに対して「ニューロンが発火する」と表現される部分を理解するまでに、少し間が必要でした。
新たに出てくる単語を確認するのに手間取ったことが1つ。
もう1つは0と1を出力することの違いを分からなかったことです。
後者について、数学により多く触れてきた私にとって"数字"は"ただの数"でしか無かったので、違いに気がつくことに遅れました。
その違いとは0/1がOFF/ONに対応しているということ。知っている人からすれば至極当然のことですが、分からない人からするとそのことに思い付くまで少しの間が必要なのかなと思います。
javaなどではTrue/Falseを使用しています。

では、なぜここでON/OFFやTrue/Falseにしないのか。
それは「信号」の考え方を使いたいからです。
入力で受け取るもの(入力信号)が数値なので、出すもの(出力信号)も数値にしたい。そうすることで出力した値を別のニューロンの入力信号として渡すことができます。そうして次々に繰り返すことができると。
この組み合わせによって、1つ1つは単純な値だったのが複雑な表現を可能にします。

このことは忘れがちですが、とても重要な考え方です。私も忘れないように気をつけようと、感想をまとめながら思いました。
スポンサーサイト

Pythonで機械学習の進捗 §1

前回Anacondaをインストールして、あれこれしてpython3の環境を整えたのでpythonを色々いじっていきます。

pythonとjavaは似ている部分が多かったので、私がpythonに慣れるまで時間はかからなかったです。
pythonとjavaの相異点をいくつか抜粋すると以下の通りです。

  • pythonインタプリアは対話モード

  • 私自身がこの点の利点を把握していないので詳しく説明できません。本ではこういった点からpythonでの機械学習を進めているようです。

  • pythonの変数はデータ型を宣言しない

  • pythonは「動的型付き言語」に分類されるプログラミング言語です。変数の型がなんなのかをpythonが判断してくれます。
    javaと比べると異なる型の演算が楽に計算できるので、その点がメリット。

  • pythonは空白文字に意味がある

  • pythonではif文やfor文、関数などの中身を区別するために、4つの空白文字を頭につけます。これはインデントを表しています。
    javaでは{}で中身を区切るので大きな違いでした。

  • pythonにはNumPyやMatplotlibなどの外部ライブラリが便利

  • 機械学習には行列計算を多く使うので、それが簡単に使用できるNumPyは非常に便利です。ブロードキャストによって、行列のスカラー倍も行えます。
    Matplotlibはグラフを描写できます。javaではいちいち点をファイルに出力し、それを別のアプリで描写するので、pythonの方が楽に使えて便利です。

以上の4つが私の印象に残ったpythonとjavaの相異点です。
javaに比べてpythonは計算を多く含むプログラムに適したプログラミング言語だと感じます。
より詳しい話は本(ゼロから作るDeepLearning)の§1(p.4~p.20)を参照してください。

Pythonで機械学習の進捗 §0

私が機械学習に興味を持った理由は友人との会話からでした。

2017年夏
「プログラミングに興味があるなら機械学習とかどうですか?」
と。
聞けば友人も参考書を買って勉強を始めようとしているタイミングだったらしく、なら私も始めようと思い立ちました。

参考書として私が購入したのは次の本です。


この本だけで機械学習の基本は網羅されているので、入門書としてとても良い本です。

このときの私の状況は...
・ノートパソコンが1台(Win10)
・プログラミング経験はjavaくらい
もし、プログラミングの経験が無い方が機械学習を始めるのであれば、上の本を読み始める前に別のプログラミング言語の入門書を読むことをおすすめします。

私のパソコンの環境にpythonを出来る環境はなかったので、まずはその構築から始めます。
まぁ、構築とか言ってますが、やることはインストーラを実行するだけです。
本の中ではpython3系のバージョンを使用しているので、それに従ってpython3を導入します。また、本ではAnacondaディストリビューションの利用を推奨しています。以下はAnacondaをダウンロードできるサイトのURLです。
https://www.anaconda.com/download/
上記のサイトからインストーラをダウンロードし実行させることで、環境を整えられます。
環境の確認方法などは本に詳しく載っているので、そちらを参考にすると良いです。

本の中でエディタについては特に載っていません。私も色々と調べてみて外部のツールをダウンロードとかしましたが、今現在使っているエディタはAnacondaに含まれているspyderを使用しています。
同じエディタとして、Anacondaに含まれているjupyterがあります。私はこちらを使ったことがないのですが、複数人で共有などする際にはjupyterの方が使い勝手が良いらしいです。

ブログの趣旨について

友人のすすめで、勉強している内容をこのブログにまとめることにしました。

現在の予定は、今私が進めているところまでは数日おきに記事の更新をしたいです。
内容も私がやってきた事を復習し、整理したものを載せていきます。

私が進めている箇所までまとめられたら、その後は不定期更新となりそうです。
プロフィール

yamoto.tvp

Author:yamoto.tvp
FC2ブログへようこそ!
大学の数学科に通うほど、数学が好きな私です。
趣味で勉強している”機械学習”などの進捗を載せています。

最新記事
最新コメント
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。