Tumblr新入生の皆さん、入学おめでとうございます!51代プログラミング研究会のしくがわと申します。私は主にこのサークルに入ってプログラミングを始めてみたい!って人やプログラミング経験があるのでこのサークルで活かしたい!って人に向けた記事を書いていこうと思います。一度は機械学習という言葉を耳にしたことがあると思います。機械学習や人工知能という技術は今、世界中を賑わせており、Googleの開発したゲームAI、「AlphaGo」がプロ棋士を打ち破ったという話は耳に新しいのではないでしょうか?他にも、Googleの自動運転カー等は、ディープラーニングといった技術を利用しています。ところで、機械学習という技術は確率、統計学といった難解な数学によって確立されているものなのですが、この記事では一切数式を用いずに、概念のみを解説していきます。難解なソースコードも載せないようにします。機械学習とは機械学習というのものは、簡単に説明すれば、「既存のデータに基いて新たなものを予測する」という技術です。身近な例で言えば、顔認識といった技術は、様々な顔写真における顔の特徴をコンピュータに学習させ、新たな顔写真における顔の部分を検出させるといったものです。機械学習の理論自体はかなり昔から存在していたのですが、昔のコンピュータでは理論を実現するだけの計算パワーがありませんでした。学習過程で用いられる大規模なデータを取り扱う技術が確立していなかったのです。近年で飛躍的にコンピュータのパワーが増大し、大規模なデータを処理する技術が確立されたために、この技術が脚光を浴びるようになったのです。機械学習における学習方法には大きく分けて二つの分類があります。「教師あり学習」と「教師なし学習」です。教師あり学習とは、過去データを入力し、出力された結果を教師データと呼ばれる正解となるデータと比較させ、その誤差を小さくするように入力の過程で与えられる重みと呼ばれるパラメータを更新していくといった学習方法です。教師あり学習で用いられるアルゴリズムは代表的なものに、「単純パーセプトロン」「ナイーブベイズ」「サポートベクトルマシン」「ランダムフォレスト」といった物があります。この中でも特にわかりやすいアルゴリズムである「単純パーセプトロン」「ランダムフォレスト」の解説を後ほどします。解説するアルゴリズムの詳しい所や、解説できなかったアルゴリズムを知りたい人は各自で調べてみてください。教師なし学習とは、教師あり学習と違い、教師データを持たない学習法です。主なアルゴリズムにクラスタリングというものがあり、主に凝集型、分割型の二種類があります。機械学習アルゴリズム教師あり学習ここでは主に分類問題に用いられるアルゴリズムを紹介します。分類問題とは、簡単に言えば、受け取ったメールがスパムなのかスパムじゃないのかを判定するような問題です。単純パーセプトロンイメージとしては上図のようになります。ベクトルとして与えられる入力データに重みがかけあわされ、その線形結合和の値に応じて0,1いずれかの数値が出力データとして与えられます。その出力データと教師データを比較し、誤差を誤差関数として与えます。一連の操作を誤差が出来るだけ小さくなるまで繰り返します。これが、単純パーセプトロンのアルゴリズムになります。層において、線形結合和に活性化関数と呼ばれる関数が適用される場合があります。この時、出力値が0か1ではなく、確率値が与えられたりすることもあります。単純パーセプトロンの階層を大きくしたものはニューラルネットワークと呼ばれ、ディープラーニングの礎になっている技術です。下の図は3層のニューラルネットワークです。AdaGradといったものが有名なのですが、これらの詳細はここには書かないのでググってみて下さい。この単純なニューラルネットワークに改良を施したものが、畳込みニューラルネットワーク(CNN)だったり、再帰型ニューラルネットワーク(RNN)だったりします。いった単純なニューラルネットワークでは難しい機械学習を行うことができます。詳しく知りたい方々はググってみるなり図書館で調べてみましょう。ランダムフォレストランダムフォレストとは、決定木と呼ばれるノードとリンクで構成されたネットワークをたくさん用いることで実現するアルゴリズムになります。決定木単体では学習を行っても高い精度を出せない為に、決定木をたくさん用いることで精度を高めていこうという考えに基いています。いった考えに基づく学習方法は集団学習と呼ばれています。このアルゴリズムは簡単ながら、高精度の結果が得られることで有名です。サポートベクトルマシン(SVM)サポートベクトルマシンは、データ間の境界線を「マージン最大化」と呼ばれる手法で求めるアルゴリズムです。マージン最大化とは、「異なる種類のデータの集団から最も遠くなる境界線を選択する」というものです。マージン最大化によって分類されたものは汎化能力が高いという特徴があります。単純パーセプトロンなどは、限られた問題を解くことしかできないのですが、このアルゴリズムでは「カーネル法」と呼ばれる方法を用いることで、様々な問題に対処できるようになっており、非常に重要なアルゴリズムになっています。凝集型クラスタリング凝集型クラスタリングとは、「似ているものを集める」方法です。各データの類似度を計算して、クラスタと呼ばれる集合を形成します。クラスタの性質はデータが分類されてから知ることが出来ます。分割型クラスタリング分割型クラスタリングとは、「似ていないものとの境界を作る」方法です。k-平均法(k-means)という手法が用いられます。まとめいくつかの機械学習のアルゴリズムを紹介しましたが、これらのアルゴリズムを実装するのは非常に大変です。これらのアルゴリズムを実装しなくても済むように、様々な機械学習用のライブラリが提供されています。代表的なものに、「Tensorflow」「Scikit-learn」「Caffe」「Chainer」などがあります。これらのライブラリは基本的にPython,C++向けに提供されています。機械学習や人工知能といった分野は今、最もホットな分野で日々世界中の研究者達によって研究されています。いつの日か、人工知能が人間の頭脳に追いつく、または越える日がやってくるかもしれませんね。この記事を通して少しでも機械学習といった分野に興味を持ってもらえれば嬉しいです。このサークルでは統計班でこのようなことをやっています。井戸の中からこんばんわ、52代プロ研のtakowasabiです。今年の...2018-06-15計算機による構造解析と最適構造探索アルゴリズムMIS.W51代プログラム研究会に所属しているikaros(Twitter:ikaro...2017-12-23最近やっていること:機械学習【カウントダウンカレンダー2017冬13日目】51代のしらすです。11日目】こんにちは!51代のしくがわです。初めまして、51代midi研、4nzuと書いてあんずと読みます。サークル代表としての抱負【カウントダウンカレンダー2019冬14日目】2019-12-24Vulkanの道も一歩から【カウントダウンカレンダー2019冬13日目】2019-12-23【blender】ポリゴンモデリングで顔をつくるときの話【カウントダウンカレンダー2019冬12日目】2019-12-22超手抜きで覚える将棋【カウントダウンカレンダー2019冬11日目】2019-12-21企画で大忙しだったお話。(3)スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。