プログラミング言語その他の関連カテゴリ(1件)PythonがAIに使われる理由とおすすめ勉強法TwitterでシェアFacebookでシェアはてなブックマークGoogle+でシェアこの記事をシェア人工知能プログラミングに挑戦してみよう最近、いたるところで人工知能の話題が満載です。GoogleのアルファGoが囲碁のチャンピオンを破ったり、ロボットが人間の受け答えをしたり、いまや自動運転の車が道路を走ろうとしています。現在の人工知能は、人間の脳神経の情報システムをモデルにしたニューラルネットワークを多層に組み合わせたディープラーニングが主流ですが、このディープラーニングを扱うためのツールにはPythonという言語が使われることが圧倒的に多いです。そこでこの記事ではまずPython言語の紹介、次になぜPythonが人工知能の分野で使われるようになったかの理由を紐解いたあと、人工知能のプログラミングをするためのPythonの勉強方法についてご紹介します。Rossum)によって開発された言語です。Pythonは同じくオランダで開発された教育用言語であるABC言語の強い影響を受けました。ヴァン・ロッサムも数年間このABC言語の開発に携わっていました。彼は大学でコンピュータサイエンスを専攻した後、いくつかの研究機関を経て、2005年から2012年までGoogleで働き、2013年にはGoogleを離れ、Dropboxに移っています。ヴァン・ロッサムはイギリスのBBCが製作した大ヒットコメディ「空飛ぶモンティ・パイソン」の大ファンであり、Pythonの名前の由来はここから来ています。このPythonを日本語にそのまま翻訳するとニシキヘビになります。Pythonの1.0は1994年の1月に、その後2.0が2000年にリリースされました。現在もっともよく利用されていると思われる2.7は2010年にリリースされました。2系と大きく異なる3系は2010年にリリースされています。現在3系の最新バージョンは3.6です。Pythonの特徴PythonはPearl,PHP,Rubyと同様に動的言語です。Pythonは教育用言語であるABC言語の影響を受けています。ロッサムもPythonの発展過程において万人のためのプログラミング言語を掲げて、誰がプログラミングしても同じようなコードになり、結果として可読性の高い言語を目指しました。Pythonは静的で型に厳格なC言語やJava言語と比較すると習得しやすく、教育用言語として子供が最初に学習する言語としてもよく利用されます。Pythonの大きな特徴はコードのかたまりであるブロックを表すためのインデントです。以下の例でRuby、Javascriptとの表記の違いを見てみましょう。例として配列の中の配列の合計を計算するプログラムをPython、Ruby、Javascriptで書いてみましょう。これは配列の2段のネスト構造を2つのforループで処理します。24]以下のコードはRubyです。こちらはforのブロックをendにて表わします。24]Javascriptでも記述してみましょう。JavascriptはJavaやC言語と同様にコードブロックを括弧で表します。Pythonでは以下のようにインデントを誤ると当然ながらその動作が変ります。24]Pythonより2年遅れて1993年に登場したRubyはまつもとゆきひろ氏によって開発されました。動的言語でインタープリタ上で動く生産性の高い言語としてPythonはよくRubyと比較されます。発展したPython一方、Pythonは科学技術計算の分野で発展してきました。実はPythonは世に出たころからから科学技術計算の分野に着目し、当初よりラムダ関数やMap/Reduce関数を持っていました。Hugunin氏などがNumpyの祖先であるNumericをリリースしました。Oliphant氏です。彼はNumericと後の2011年にリリースされたNumArrayを統合して2005年には現在Pythonのスタンダードとも言えるNumpyをリリースしました。ディープラーニングにおいて欠かせないライブラリとなっています。Numpyの公式サイトは以下になります。Oliphant氏はScipyの開発について初期から関わっています。含む高水準数値計算ライブラリです。Scipyは商用数値計算ライブラリであるMatlibに代替となり得るオープンソースソフトウェアです。Scipyの公式サイトは次の通りです。https://www.scipy.org/統計計算分野におけるPythonR言語これまで統計解析の分野におけるオープンソースにおけるデファクトは何といってもR言語です。Gentlemanによって開発され、1996年に初期リリースがなされました。R言語は高速な組込み関数群を提供し、優れたグラフ機能とデータ互換性を持ち、膨大な統計計算ライブラリを提供するCRANネットワーク環境があります。広く利用されています。Rでは統計計算を行なった結果をグラフなどで可視化する強力なグラフィックライブラリであるggplot2があります。統計解析などデータを扱う分野では、プログラミングだけでなく、結果の共有や再現、説明用のドキュメントの作成などレポーティングがとても重要になります。R言語のためのRmarkdownはこのような目的のため利用することができます。2011年にリリースされたRStudioと呼ばれる統合プログラミング環境により、言語、Rmarkdownのドキュメント作成、グラフ作成がひとつの統合環境で効率よく行うことができます。このようにRは統計分析を扱うデータサイエンティストのデファクトの環境になっています。以下は筆者の環境でRStudioを動かしたものです。notebookIPythonは通常のPythonのインタープリタと比較して補完機能やコードハイライティングなどの機能を提供することでより使いやすく生産性の高い統合されたPythonのプログラミング環境を提供します。GTK、Qt、WXによる描画、グラフの作成も可能です。IPythonはscipyの一部として提供されました。Notebookはブラウザ上におけるプログラムのインターラクティブな開発、実行環境です。ノートブックと呼ばれるドキュメントを作成し、プログラムの記述と実行結果の保存、説明のためのドキュメントの作成と共有、再現などをブラウザ上で行うことができます。notebookはPythonベースのノートブックの環境を提供するものです。notebook用のサーバーを立ち上げておくことで、ローカル、リモートのWebブラウザからアクセスすることができ、そこでインターラクティブな開発、実行環境を利用できます。notebookのドキュメントとしてMarkdown形式の記述も行うことができます。notebookを用いることでR言語が提供していたデータサイエンティストの環境を提供できるようになりました。notebookという名称になりました。notebookはTensorflow、ChainerなどPythonベースのディープラーニングライブラリのデファクトの開発、実行環境となっています。グラフをブラウザ上で簡単に表示することができます。MatplotlibMatplotlibはPythonベースの2Dの描画ライブラリであり、グラフ、イメージの描画を行うことができます。2Dとありますが、3Dのグラフ描画も可能です。notebookから簡単に利用することが可能です。Matplotlibの公式サイトは以下の通りです。http://matplotlib.org/以下は筆者がMatplotlibを用いてsinカーブを描いたものです。Matplotlibにより様々なグラフ、イメージの描画を行うことができます。以下のギャラリを参照いただければと思います。https://matplotlib.org/gallery.htmlPandasPandasはPythonで記述されたデータ分析のためのライブラリです。McKinney氏が2008年に開発したツールです。PandasはR言語のようなデータフレームのデータ構造があります。ファイナンスの分野で発展してきたことからデータ分析の中でも時系列処理に強いと言われています。Pandasの公式サイトは以下の通りです。http://pandas.pydata.org/以下は今年の日経225銘柄の平均をグラフ化したものです。notebookとの組み合わせでよく利用されます。Pythonが人工知能の分野で使われる理由これまでの説明を振り返ってPythonが人工知能の分野で使われる理由を挙げてみます。Pythonが科学技術計算の分野で発展してきたことです。行列計算を含む科学技術計算のライブラリであるNumpyが開発され、その使いやすさで人気を博したことが挙げられます。ディープラーニングのライブラリであるTensorflowやChainer、TeanoはこのNumpyを利用しています。notebookやその上で動く可視化ライブラリであるMatplotlibの存在も重要です。このような分野ではR言語や商用ソフトウェアであるMATLABが先行していました。Python自体の汎用性や言語自体の簡潔さが人気を博して進化して先行するソフトウェアとほぼ同等のことが可能となりました。なんといってもPythonが持つ習得しやすさ、生産性の高さ、コードの可読性により多くのひとから支持されて言語自体が広がったことではないでしょうか。NetworksのChainer、モントリオール大学のTheanoはPythonベースで実装されています。機会があればこれらのツールをご紹介したいと思います。最後にPythonのおすすめの勉強法を紹介しておきましょう。Pythonに限らず、プログラミング言語の習得は習うより慣れろです。notebookが起動できる環境を構築しましょう。notebookも含んでいます。Anacondaは400以上のPythonパッケージを含んでいるので、個別のインストール、セットアップの手間を省くことができます。Anacondaはもし、Pythonがインストールされていなければ、Pythonの環境もインストールしてくれます。開発者や利用するソフトウェアや、パッケージのバージョンによって環境を切り変えるCondaと呼ばれるパッケージ管理ツールもあります。Anacondaのホームページはこちらです。https://www.continuum.io/Anacondaは以下のサイトからダウンロードできます。Linux、Mac、Windowsの環境をサポートしているので、導入はそれぞれの方法を参照して下さい。Pythonはまずは3.x系(3.6)を利用することでいいかと思います。https://www.continuum.io/downloadsいずれのプラットフォームについてもダウンロードしたファイルを実行すればインストールが完了します。notebookを起動してみましょう。notebookが無事起動したら、Numpy、Matplotlibを使ってみましょう。Numpyは英語ですが、本家のサイトにクイックスタートがあります。https://docs.scipy.org/doc/numpy-dev/user/quickstart.html順番に打ち込んでいくことでNumpyでできることだけでなく、Pythonの文法にも慣れていくと思います。私訳で日本語に訳していただいていますのでこちらを参照下さい。http://learning-memo.hatenablog.com/entry/2017/02/02/202103Matplotlibは以下に本家のチュートリアルがあります。https://matplotlib.org/users/tutorials.html日本語ではこちらにごく簡単なチュートリアルがあります。http://iatlex.com/python/matplotlib_intro1/Pythonそのものの学習Python自体は非常に習得しやすく上記のNumpyとMatplotlibを学ぶ過程で雰囲気はつかめるかと思います。以下のサイトは入門から応用までの幅広い層を対象にしたサイトです。http://www.python-izm.com/ごく手短にPythonを学びたければ以下のpdfを読まれてはいかがでしょう。http://biosciencedbc.jp/gadget/human/20150728_hattori.pdfおわりに今回、AIにPythonが使われる理由ということでPythonの概要とPythonが現在のAI、つまりディープラーニングの世界で使われるかの理由、およびディープラーニングのライブラリを利用するための前段階の位置付けでPythonの学習方法を述べました。Pythonを習得したらGoogleのTensorflowなどを用いて華麗に人工知能の世界にデビューしてみませんか。機会があればTensorflowについても書かせていただきたいと思います。誠プログラミング言語、特にLisp、関数型言語に興味あり。Publishingから共著で出版。Blogより了解を得て日本語翻訳し掲載した記事になります。Bouwkamp氏によって投稿されました。あなたが今年、これら最良のプログラミングの本を1冊でも読むとしたら、あなたの周りにいるほぼ全員より一歩抜きん出ることができるでしょう。完全なプログラミングを目指して...プログラミングを始める前に知っておきたい!4つの学習スタイルとは!本稿は、CourseReportのブログ記事を、CourseReportより了解を得て日本語翻訳し掲載した記事になります。これからプログラミングを始めようと考えている方は、ぜひ始める前に読んでおきましょう。質が高く自分に合った学習ができるはずです。これからプログラミングを学ぼうと決意しているなら、学ぶ前に考えておくべきことがいろいろあります。一昔前までは、ゲーム制作というと特別な技術が必要でしたが、今は様々な開発ソフトと...2016年の人気プログラム言語10種を徹底比較!気になる年収や求人、学習難易度まで現在、プログラム言語は多様化しており、どれから学んでよいかわからないという質問をよくみかけます。ここでは、求人数をランキング形式にし、代表的なプログラム言語の特徴と長所、短所などをまとめました。これからプログラムを学ぶ人は、ぜひ参考にしてください。Python(パイソン)Webアプリケーションから統計解析にまで利用されており、幅広い利用ができます。コードの読みやすくなるように言...【保存版】全部読んだら完全未経験者でも絶対Webクリエイターになれる本29冊こんちには、フロントエンジニア歴が1年のじぇしーです。思わず熱中してしまうゲーム風プログラミング学習サイトまとめ近年ではプログラミングをゲーム風に楽しく学べるサービスが増えていますが、中には「ゲームっぽい」だけでフタを開けてみたらただのプログラミング講座だった...というものも多いです。コードを書く部分はただのプログラミン...プログラミングを始める前に知っておきたい!4つの学習スタイルとは!本稿は、CourseReportのブログ記事を、CourseReportより了解を得て日本語翻訳し掲載した記事になります。これからプログラミングを始めようと考えている方は、ぜひ始める前に読んでおきましょう。質が高く自分に合った学習ができるはずです。これからプログラミングを学ぼうと決意しているなら、学ぶ前に考えておくべきことがいろいろあります。「あなたにはどれくらい自由な時間がありますか...初心者でもOK!ゲームで遊ぶようにプログラミングを学べるサービス5選プログラミング初心者にとってはプログラミングを勉強しようと思っても最初のハードルが高いこともあると思います。そんな悩みを持つ人でも、ゲームのように遊びながらであれば最初の一歩を踏み出せるのではないでしょうか。そこで今回は、ゲームで遊ぶようにプログラミングを学べるサービスを紹介します。初心者が無料で使えるものだけを選んでみました。気になったものからチャレンジしてみましょう。差分表示というとバージョン管理システムと組み合わせて使うのが基本となっています。GitやHg、Subversion、CVSなどで使っている人は多いでしょう。二つのファイルがあった時に単独で使う差分表示ソフトウェアも便利です。今回はそんな差分表示ソフトウェアとしてDeltaを紹介します。差分をHTMLと標準出力で出してくれるソフトウェアです。Blogより了解を得て日本語翻訳し掲載した記事になります。Bouwkamp氏によって投稿されました。あなたが今年、これら最良のプログラミングの本を1冊でも読むとしたら、あなたの周りにいるほぼ全員より一歩抜きん出ることができるでしょう。運営会社オウンドメディア運営会社の皆様へライター募集お問い合わせ当サービスでは、掲載許諾を受けたオウンドメディアをご紹介しています。記事掲載のご希望、お問い合わせ等はこちらよりご連絡ください。当サービスはSEデザインが運営しており、翔泳社のメディアとは運営元が異なります。JAPANページトップ。