Octave - Matlab Tutorials

Image
Courseraオンライン講座の機械学習コースを 直感的な理解を優先して、ゆるーく まとめてます。 正確には公式サイトを参照して下さい。 [MachineLearning Week2](https://www.coursera.org/learn/machine-learning/home/week/2) # Octave - Matlab Tutorials ## Basic Operations Octaveの基本的な操作をまとめます。 コメントを書くときは % で始めます。 - 1 ~= 2: % !=のことで、等しくないことをチェック - a = pi % πを代入 - disp( sprintf( '2 decimals: %0.2f', a)) % テキストのフォーマット出力 - format long % 以降、結果を長く表示 - format short % 以降、結果を短く表示。 * A = [ 1 2; 3 4; 5 6] % 配列を定義 - v = 1: 0.1: 2 % 1 から 2まで 0.1ステップで加算 * ones( 2, 3) % 2行3列 のすべてが 1の配列を作成 * 2*ones( 2, 3) % 上記行列を倍に * w = zeros( 1,3) % 1行3列の、すべて0の行列を作成 * w = rand( 1, 3) % 乱数配列 * w = randn( 1, 3) % Gaussian乱数配列 - w = -6 + sqrt( 10)*(randn(1,10000)); % 10000個 - hist(w) % ヒストグラム表示 - hist(w,60) % ヒストグラム表示(詳細) + eye(4) % 単位行列 - help eye % ヘルプ表示 ## Moving Data Around 使用頻度の高い処理をまとめます。 - A = [ 1 2; 3 4; 5 6] - size(A) % 行列の大きさ - size(A,1) % 最初の次元の大きさ - length(v) % 最長の長さ + pwd % 作業ディレクトリ + cd % ディレクトリの変更 + load ...

Coursera の Machine Learning コースを受けてみた

[Coursera](https://www.coursera.org/)は、オンラインの無料講座です。 その中の [Machine Learning](https://www.coursera.org/learn/machine-learning) (機械学習)の講座を受けてみたので、 まとめてみます。 ## どんな人向け? ### 議員でもAIを駆使する時代! 偶然、新宿区議会に、AI議員(自称)として活動されている 伊藤陽平さんと言う方がいることを知りました。 昼間は議会活動し、夜、家ではAIプログラミングをして、 過去の議案をAIに通して、実際に決定された賛否を比較したり 色々な試みを行なっているとのことです。 興味深い結果が出ているようですよ。 将棋や囲碁のような論理的な問題の最適解を解くような問題は、 もう人間の能力を超えることは証明されました。 今まで「直感」で行なっていた意思決定は、 適切なデータさえあれば、 議会の法案や、もしかしたら裁判の判決も、 人間以上の合理性で、AIが判断するのも 本当に時間の問題なのかもしれません。 ### そこで、、 これからAIが全盛となる時代になっていくだろうな、 となんとなく思っていて、 自分でもAIを使ったプログラムや、 システムに関わってみたいと思っている人、 詳しくAIの機械学習がどうなっているか、中身を見てみたい人。 Courseraの共同創設者である Andrew Ng教授自身が解説してくれる このMachine Learningコースは一見の価値があります。 このコースが公開されたのは2011年ですが、 Ng教授は もうその時点で、10数年も AIを使った銀河の解析やら、リコメンドシステムの開発など、 シリコンバレーやBaiduなどで 経験を積んでいたのだそうです。 世の中にはすごい人がいるもんです。 ## どんな前知識? ### 大学1年程度の基礎数学の知識があるといいです。 数列、正規分布、最小二乗法、行列計算、偏微分、ベクトル解析などが出てきます。 特にその証明までは求められないので、 式の意味することが分かりさえすればOKだと思います。 ### Octaveという数値解析マクロみたいな言語を使用します [Octave](https://www.gnu.org/software/octave/) 行列計算や、最適化アルゴリズムが組み込まれています。 Windows/Mac/Linuxに対応してます。 JavaやC言語のような低レベルの言語でプログラムを組むより、 Octaveという高レベルの言語で処理することで、 慣れれば直感的に複雑な行列計算などが、 数行で記述できます。 ### そこそこ英語 動画字幕は日本語にも対応していますが、 説明文や問題は全て英語なので、 細かいところに入って行く場合は どうしても英語が必用となります。 簡潔な英語が使われているし、 数学的な表現は国際的に統一されているので、 どうしても分からないところは、Google翻訳でもいけると思います。 ## 何が学べる? 機械学習にどんな種類があって、 実際にどのように動いているのか、の基礎が分かります。 簡単な実験なら、自分でも機械学習の 小規模なシステムぐらいなら作れるような"気"になります。 特に興味深かったのは、 もちろん機械学習について詳しく学べます。 それ以上に、 単に機械学習システムの構造だけでなく、 実際に自分自身で機械学習システムを作ろうとする時、 **シリコンバレーのエンジニアたちでさえ悩んでいる**、 - つまづきそうな点、 - システムのどこに問題があるのか発見する方法、 - システム自体を評価する方法、 - 失敗したり、時間を浪費しないようにするにはどうしたら良いのか、 などの、超実戦的なアドバイスが 丁寧なのに感心しました。 セクションごとに理解を確認するための小テストがあります。 Octaveプログラムの提出も、 次の課題に進むのに必要です。 ## 受講してみた感想 11週のコースですが、短期間で終了することが出来ました。 幸い理系の大学出身だし、 長年プログラム開発をしていたし、 海外勤務も長かったから、 比較的短い時間で完了できたのかも。 それ以上に、 講義の内容が分かりやすく、 興味があったし、 プログラムの説明がとても丁寧で 混乱させない作りになっていたからだと思います。 学生だったとき、 逆行列とか偏微分とか何に使うのだろう、 全然興味が持てず、頭に入ってきませんでした。 特にベクトル解析って全く理解できませんでした。 実際の例を示してもらわないとわからないタイプの人間なので、、、。 今回このコースをやってみて、 「あぁそーいうことだったのね」 「行列はこーいうふうに応用できるんだ」 「ここでベクトル解析と行列が繋がるのね」 と腑に落ちたのが自分にとっての最大の進歩でした。

Comments

Popular posts from this blog

Markdownで投稿する前に Visual Codeで下書き

Google code-prettify

【最重要】 Cost Function