事例を元に仕組みを解説!アルゴリズムとは【初心者向け】
初心者向けにアルゴリズムについて解説しています。最初にアルゴリズムの仕組み、基本となる3つの処理を学びます。続いて実際の生活でアルゴリズムが使われている場面の例を見ながら理解を深めていきましょう。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
今回は、アルゴリズムについて解説します。
プログラミングを学ぶ上でアルゴリズムの理解は欠かせないでしょう。自動販売機や人工知能の分野でどうアルゴリズムが利用されているのか例を紹介しています。
なお本記事は、TechAcademyのオンラインブートキャンプ、AI講座とデータサイエンス講座の内容をもとに作成しています。
今回は、機械学習に関する内容だね!
どういう内容でしょうか?
アルゴリズムについて詳しく説明していくね!
お願いします!
アルゴリズムとは
アルゴリズムとは、ある課題が存在する時、どのような命令を実行すれば、コンピューターが課題を解決することが出来るかを考えることです。
プログラミングにおいてアルゴリズムを考えることは建築で設計を考えることに近いイメージで考えることができます。
プログラミングにとっては、アルゴリズムを考えることができれば、課題は解決したに等しいと言えます。
つまり、アルゴリズムとは問題解決の手段と言えます。
プログラミング作業では、次の5つの段階を必要とします。
プログラミングの5段階
- 問題設定
- 設計
- 実装
- テスト
- デバッグ
アルゴリズムの仕組み
プログラミングでは、いくつかの部品を使用してアルゴリズムを考えていきます。
アルゴリズムを考える上で代表的な部品に、処理・条件分岐・繰返しという部品があります。
処理
処理とは、最も基本的なアルゴリズム部品です。
自動販売機を例に例えると、次のように最も基本的な動作を制御します。
自動販売機の例
商品ボタンを光らせる 商品を出す
条件分岐
条件分岐は「もし○○だったら△△する」というような条件によって、別々の処理を行うことを意味します。
自動販売機を例に例えると、次のように投入金額と商品購入の条件分岐で利用します。
自動販売機の例
もし500円投入したら、500以下の商品の商品ボタンを光らせる。 もし、120円の商品ボタンが押されたら、商品を出す。
繰返し
繰返しは、繰り返し条件に当てはまる間、処理を繰り返すというものです。
自動販売機を例に例えると、次のように残金と商品ボタンを光らせる処理で利用します。
自動販売機の例
残金が120円以上有る間はずっと、繰返して商品ボタンを光らせる。
アルゴリズムの活用例
日常生活のあらゆるところでアルゴリズムが活用されています。
自動販売機
1.お金が投入されたら、2-1から2-3までの条件分岐に合致する処理を繰り返す。 2-1.もし、投入残金が120円以上だが、120円以下の商品在庫が無ければ何もしない。 2-2.もし、投入残金が120円以上であれば、120円以下の商品ボタンを光らせる。 2-2-1.もし、120円の商品ボタンが押されれば、商品を出す。 2.3.投入金額が120円に満たないので何もしない。
ニュースアプリ
1.アプリを起動する 2.初期画面のニュースを取得する処理 2-1-1.もし、初期画面でよく読まれているニュースを表示する必要がある場合。 2-1-2.自社データベース内の閲覧ランキング上位のニュースを、10件取得するまで取得処理を繰り返す。 2-1-3.取得したランキング上位のニュースデータを、閲覧上位順に並べて表示する。 3.初期画面でニュースカテゴリーを表示する処理 3-1-1.自社データベース内のニュースカテゴリー情報を取得する。 3-1-2.取得したニュースカテゴリーをタブ状態で表示する。 4.もし、ユーザーがスポーツニュースのタブをタップされた場合の処理 4-1-1.もし、スポーツニュースのタブがタップされたら、データベース内のニュースカテゴリーのデータにアクセスする。 4-1-2.ニュースカテゴリーのデータを昇順(新しいニュース順) に並べ替える処理をする。 4-1-3.昇順(新しいニュース順)に並べ替えられたデータを10件取得する。 4-1-4.取得したデータを表示する。 4-1-5.もっと読むというボタンが押された場合、4-1-1と4-1-2の処理を行う。 4-1-6.既に10件しゅとくしているため、11件目以降のデータを取得する。 4-1-7.取得したデータを表示する 5.別のタブがタップされたり、もっと読むがタップされた場合は4の処理をタップ内容に応じて繰り返す。
AlphaGoのアルゴリズム
AlphaGo(アルファ碁、アルファご)は、Googleが開発した人工知能を搭載した囲碁プログラムです。
Google DeepMindという深層学習機能を搭載しており、人工知能自身で学習することで、学習すればするほど良い回答を導き出すことが出来るというプログラムです。
2016年3月には、李世乭氏という韓国の世界的なプロ囲碁棋士に4勝1敗で勝ったことで有名になりました。
これにより、韓国棋院認定名誉九段になりました。
2017年5月には、柯潔氏という中国の人類最強プロ囲碁棋士に3局全勝しました。
これにより、中国囲棋協会認定名誉九段になりました。
今回はAlphaGoのアルゴリズムを簡単に解説します。
AlphaGoの種類
1. AlphaGo Fan
初代。2015年10月にコンピューターとしてはじめてプロ棋士に勝利しました。
2. AlphaGo Lee
2代目。李世乭氏という韓国の世界的なプロ囲碁棋士に勝利しました。
3. AlphaGo Master
3代目。柯潔氏という中国の人類最強プロ囲碁棋士に勝利しました。
4. AlphaGo Zero
AlphaGo Masterとは全く別の自己学習のみで40日後に、AlphaGo Masterに89勝11敗しました。
AlphaGo Masterまでのアルゴリズム
AlphaGo Masterまではディープニューラルネットワークと呼ばれる深層学習を行う人工知能です。
モンテカルロ木探索というアルゴリズムを用いています。
value networkにより、盤面の評価を行い、policy networkにより、次の1手を選択します。
AlphaGo Masterまでの学習手法
1. 教師付き学習をおこないます。
囲碁のルールと勝敗決定の方法を学習させます。
また、過去の棋譜や、名人級の棋士の戦い方を教師として囲碁を学習します。
2. 強化学習を行います。
教室付き学習後、自分自身と対戦するという強化学習を行い、さっきまでの自分を超える為に自己研鑽するというアルゴリズムを通じ段階的にアルゴリズムが強化されます。
AlphaGo Zeroのアルゴリズム
AlphaGo Zero では、ルール以外の知識は全く与えずに強化学習を行うことで、40日後に、AlphaGo Masterに89勝11敗しました。
つまり、AlphaGo Zeroは世界最強の囲碁棋士に40日間で成長することができたということです。
1. TensorFlowを利用した教師なし学習による訓練
最初にルールのみを教えます。
そして、盤上の石の状態のみに注目して、ルールに基づいて勝利するための一手を予測します。
2. TensorFlowとは
TensorFlowとは、多次元配列のデータに基づき、深層学習を行うオープンソースのライブラリです。
深層学習とは、自分自身で学習するプログラムというイメージです。
3. 教師なし学習
教師なし学習とは、歴史上の棋譜に基づく理想的な指し手から学ぶ、 AlphaGo Masterまでの学習手法とは異なります。
ルールに基づいて、自分自身と対戦し続け、自分自身の手が結果にどの様に影響するかを予測することを目標に自己強化を行うことです。
最初の3日間で490万局、自分自身と対戦することでAlphaGo Leeに100戦100勝するという驚異的な成長をみせました。
4. 教師あり学習との比較
2017年10月に発表された論文によると、AlphaGo Zeroに教師あり学習を行った所、短期的には効果的であったが、長期的に見れば教師なし学習のAlphaGo Zeroの方が優秀だったということでした。
今回は、アルゴリズムについて解説しました。
この記事を監修してくれた方
中本賢吾(なかもとけんご) 開発実績:PHPフレームワークを利用した会員制SNS・ネットショップ構築、AWSや専用サーバー下でLinuxを使用したセキュアな環境構築、人工知能を利用したシステム開発、店舗検索スマホアプリ開発など。 その他にも地域の職業プログラマー育成活動を行い、2018年には小学生がUnityで開発したオリジナルAndroidアプリをGooglePlayでリリース。ゲームで遊ぶより作ろうぜ!を合言葉に、小学生でも起業できる技術力を育成可能で有ることを証明し続けている。 |
内容分かりやすくて良かったです!
ゆかりちゃんも分からないことがあったら質問してね!
分かりました。ありがとうございます!
TechAcademyでは、初心者でも、AI(人工知能)の構築に必要な機械学習・ディープラーニングについて実践的に学習することができる、オンラインブートキャンプAI講座を開催しています。
挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。