1. パーソルテクノロジースタッフのエンジニア派遣
  2. 【はたラボ】派遣のニュース・仕事情報
  3. IT/Web派遣コラム
  4. 【線形代数の基礎】機械学習・ディープラーニングでも必須の演算

【線形代数の基礎】機械学習・ディープラーニングでも必須の演算

IT/Web派遣コラム この記事は約 14 分で読めます。

時代の最先端である人工知能(AI)や、ロボットを開発するエンジニアを志す方は多いでしょう。

しかし、専門性の高い職業であるため、「何から勉強したら良いのかわからない」「専門書を読んでも難解すぎて理解できない」などと、諦めかけてはいませんか?

実はこれらの分野では、専門書を読むために必要な知識があるのです。

 

その中のひとつが、「形代数(せんけいだいすう)」です。

特に、人工知能開発での機械学習やディープラーニング(深層学習)を行う上で、線の知識は必須となります。

しかし、理工系の大学数学を専門的に学んできた人でない限り、線という言葉すら知らないということもあるでしょう。

 

数学の中でも、さまざまな分野に応用がきく学問です。

ここでは、線の基礎的な知識について説明していきます。

 

【線的】機械学習には線が必要?

機械学習とは、人工知能における研究課題のひとつで、人間と同様の思考パターンをコンピューターに学習させようとする技術または手法のことです。

機械(コンピューター)に学習させるためには、学習のもとになる大量のデータを入力する必要があります。

それを活用する具体例としては、以下のようなものが挙げられます。

 

株やFXなど過去の膨大な取引データを学習させて、投資アドバイザーの役割をさせる

膨大な患者のカルテから、患者の生活様式や体質・病名などを分析して、病気の傾向を割り出す

膨大な写真データの中から、特定の人物が写っている写真だけを識別し選別する

 

コンピューターは、これらのデータを「機械学習アルゴリズムで分類・認識させて、最適な処理を見つけ出します。

この一連の処理を何段階も繰り返すことで、まだ学習していないデータに対しても、分類や識別をすることができるようになり、既存のデータから未来を予測することが可能となります。

 

機械学習の仕事の9割はデータセットにある」といわれるほど、機械学習においてデータセットは重要です。

データセットの前処理として行列の演算を行う際、行列の基本的な役割や扱い方の知識が必要となります。

また、地や写真などのデータはそのまま計算することは困難ですが、ベクトルの概念を使用すれば、これらを行列の数式へ変換することが可能です。

行列ベクトルの知識と概念は、大量のデータをまとめて処理し、簡潔に書き表すことができるので、機械学習に役立ちます。

 

を学ぶことで、機械学習で使われるアルゴリズムをより深く理解でき、機械学習を使ったシステムやサービスの設計がしやすくなります。

 

まずは基礎を理解する

は、もともと効率のよい連立方程式の解法を考えるために考案された学問です。

非常に応用範囲が広かったため、いまでは数学の一大分野となりました。

 

機械に学習をさせるためには、あらゆることを値として入力しなければなりません。

を使うと、や3D空間など、字以外ものを計算式に変換することができます。

具体的には、平面のを2次元空間を3次元、その座標を計算式として四則演算することが可能です。

 

またベクトルの概念を覚えると、行列の計算式を見ただけで、その計算式が表すや3D空間をイメージできるようになります。

たとえばバーチャルリアリティーのような3D空間で、物を動かすプログラムなどを作るときに非常に役に立つでしょう。

 

さらには、人間の想像できない4次元や10次元でも、形代数ではn次元として計算することが可能です。

これは、量子コンピューターを扱う量子力学の分野などで役立ちます。

ここでは、そんな機械学習に役立つ線の中でも、主に関係のある「行列」と「ベクトル」を中心に解説します。

この解説は、プログラミングに応用できるで、初心者にもわかりやすいように一部簡略化して記載しますので、厳密な定義については各自で学習し理解を深めましょう。

 

ベクトルとは

ベクトルとは、基本的に「向きと大きさを持つ量」のことを指します。

一方、大きさのみで表され、方向を持たない量のことを「スカラー」といいます。

式においては、列の形や変ではなく、単体で書かれた字で表されます。

 

また、ベクトルにはいくつかの種類があります。

 

 位置ベクトル 

平面(2次元)や空間(3次元)上のある点を、原点からの座標で表したもの

 

 幾何ベクトル 

原点ではなく、ある位置からある位置への向きと大きさを表すもの

矢印で表すことができる

 

 空間ベクトル 

空間内のある有向線分から、その位置情報を無視して「向き」と「大きさ」だけに着目したもの

 

 数ベクトル 

単にの集まりを示すもの

この解説で扱うベクトルは、主に「位置ベクトル」と「幾何ベクトル」になります。

 

基底について

基底を分かりやすく説明すると、全体を表現するのに必要最低限のベクトルたちのことです。

詳しくは

  • それらの一次結合で全てのベクトルを表現できる
  • それらは一次独立である

という条件を満たすベクトル集合のことを指します。

 

単位ベクトルについて

長さ(大きさ)が1であるベクトルのことを「単位ベクトル」といいます。

大きさが1なので、目盛りのような役割をすることもあります。

 

独立なベクトルについて

2本以上のベクトルが重ならず別の方向を向いているとき、これらのベクトルを「独立なベクトル」といいます。

正確には、「1独立なベクトル」あるいは、「線独立なベクトル」といいます。

 

結合について

結合とは、いくつかのベクトルあるいは関数があるとき、それぞれを定数倍したものの和のことです。

「1結合」ともいいます。

 

基底ベクトルについて

基底ベクトルとは、形独立なベクトルから形成される集合のことです。

そのベクトルにおける線結合として、ベクトル空間ですべてのベクトルを表すことが可能です。

 

ベクトル空間について

2次元空間では、互いに平行でないベクトルが2つあれば、その線結合ですべての平面を表すことができます。

この関係は3次元空間にも応用が可能で、互いに平行でないベクトルが3つあれば、空間を表すことができます。

この空間を、「線形空間」または「ベクトル空間」といいます。

 

部分空間について

部分空間とは、あるベクトル空間の部分集合にあたるベクトル空間のことです。

「線形部分空間」や「部分ベクトル空間」と呼ぶこともあります。

 

形写像について

形写像とは、1で変に値を代入する時のように、数と変数を対応づけることです。

たとえば、「y=f(x)」という式があるとき、fのことを写像といいます。

ここで、すべてのxについて、fが次の性質を満たす時、fを「線形写像といいます。

  • f(x+y)=f(x)+f(y)
  • f(cx)=cf(x)

これは、原点を通る直線の式を表す、1「f(x)=ax」を一般化したものです。

具体的には、ベクトルを特定の方向に拡大・縮小することだとイメージしてください。

 

行列とは

行列数字や文字を、長方形や正方形に並べたものです。

縦横方向に、字や文字を入れたブロックを並べた状態をイメージしましょう。

行列ベクトルの一種と考えると幾何ベクトルにあたり、横に並べたものを「行ベクトル縦に並べたものを「列ベクトルといいます。

 

また、横向きに並ぶ方を「行」と呼び、縦方向に並ぶ方を「列」と呼びます。

仮に3行4列の行列があれば、「3行4列の行列」または「3×4行列と呼びます。

さらに、この行列を構成するブロックの一つひとつを「行列の成分といいます。

 

行列式について

行列式とは、n次正方行列の数字を、規則に基づいて計算した結果のことをいいます。

これを「行列式の値」ともいいます。

計算例を見たほうが理解を深めやすいため、参考書などで調べてみましょう。

 

正方行列について

行要素の数と列要素の数が一致する行列を「正方行列」といいます。

 

単位行列について

行数と列数が等しく、左上から対角線上に1が並び、その他の成分がすべて0になる行列のことを「単位行列」といいます。

 

角行列について

正方行列のうち、対角成分以外の成分がすべて0の行列を「対角行列」といいます。

単位行列も対角行列のひとつです。

 

角化とは

「対角化」を説明すると以下のようになります。

  1. 正方行列を線形変換を用いて、もとの行列と相似な対角行列に変形すること
  2. ベクトル空間の線形写像に対し、空間の基底を取り替え、その作用が常にある方向(固有空間)へのスカラー倍(固有値)として現れるようにすること

行列やベクトルを対角化することで、無駄な計算量を大幅に省くことかできます。

 

行列について

a にかけたら 1になるのことを「といいます。

また、行列Aにかけたら単位行列 E になる行列のことを「行列といいます。

行列とは、「逆行列バージョン」と考えるとよいでしょう。

 

正則行列について

逆行列が存在する行列のことを「正則行列」といいます。

 

行列の基本変について

行列の基本変」とは、以下の手順で行列計算することです。

  1. ある行を何倍かする
  2. ある行を何倍かして別の行に加える(別の行から引く)
  3. ある行と別の行を入れ替える

この方法で、連立方程式を解くのと同じように、行列から解を求めることができます。

具体的な数式例を参考書などで確認すると、さらに理解しやすいでしょう。

 

行列と余因子行列について

行列」とは部分行列ともいい、ある行列から、一部の行または列を取り除いてできた行列のことを指します。

その小行列式は「小さな」行列式、「Minor(マイナー)」ということで「M」という記号が用いられます。

 

因子行列(余因子展開)」は、行列式にプラスまたはマイナスの符号を加えて得られた行列のことを指します。

こうして、大きな行列を小さな行列の集まりとして捉えることで、計算の効率を上げることが可能です。

には他にもいろいろな法則がありますが、基本の概念が理解できていれば、参考書を読む際にも内容が理解しやすくなるでしょう。

 

【線の理解】エンジニアとして線を理解する

機械学習エンジニアは、AIがAIらしく振舞うために重要な機械学習アルゴリズムを開発できるエンジニアです。

しかし、たとえITエンジニアの経験者でも、機械学習エンジニアになることは容易ではありません。

最低でも「Python」などのプログラミングの知識や、機械学習のアルゴリズムデータベースやモデリングの知識、そして数学の知識が必要です。

それではエンジニア線から、具体的な言語やツールなどを例に出して解説していきましょう。

 

機械学習で使用する言語

機械学習に使用するプログラミング言語で最も有名なものは、「Python」です。

Pythonはシンプルなシンタックス(文法)で初心者にも学びやすく、大企業でも開発に使われているプログラミング言語です。

 

また、Python対応のIDE(エディタ、デバッガ、コンパイラをひとつにまとめた統合開発環境)に「PyScripter」があります。

PyScripterは、オープンソースのwindows用開発環境で使い勝手が良いツールのため、初心者にもおすすめです。

 

ディープラーニングの分野でも、多くのソフトウェアがPythonで動作しています。

  • TensorFlow(Googleが開発したディープラーニングのフレームワーク)
  • PyTorch(Facebookで研究用途に使用されているディープラーニングのフレームワーク)

さらに機械学習のスキルアップをはかるには、プログラミングをしながら線形代数を学ぶこともおすすめです。

参考になる本を紹介します。

 

■ プログラミングのための線形代数 著者:平岡 和幸氏、堀 玄氏

出典:https://www.ohmsha.co.jp/book/9784274065781/

【本の詳細URL】

https://www.ohmsha.co.jp/book/9784274065781/

 

■ 行列プログラマー -Pythonプログラムで学ぶ線形代数 著者:Philip N. Klein氏

出典:https://www.oreilly.co.jp/books/9784873117775/

【本の詳細URL】

https://www.oreilly.co.jp/books/9784873117775/

 

Pythonライブラリ「NumPy」

「NumPy」は、Pythonのオープンソースライブラリで、大規模な多次元配列や行列の演算など、科学技術計算を効率的に行えます

Python単体でも大規模な多次元配列等の処理は可能ですが、膨大な手間と時間を要するため、機械学習ではNumPyを使って処理するのが一般的です。

NumPyを扱えるようになることは、機械学習エンジニアにとって「最初の一歩」といえるでしょう。

 

Pythonライブラリ「Pandas」

Pandasは、データ操作を高速かつ効率的に扱う「データフレームを用いて、データ解析を支援する機能のPythonライブラリです。

100万件あるデータを解析して、別の100万件のデータと比較して…などの処理が求められる時、このライブラリが役に立ちます。

データセットの解析・処理を効率的に進めるには必須のライブラリです。

初級の機械学習エンジニアにとって、Pandasをストレスなく使えることが重要なスキルといえます。

 

を最短で学習する方法はあるのか?

理工系の大学では1年生で習うレベルの学問です。

微分分やベクトルなどを理解していれば、基礎的な線の知識を身につけることは難しいことではありません。

 

線形代数の知識は、独学で学ぶことも可能です。

独学の際の勉強のコツは、テキストや参考書を元に、演習問題をひたすら解いていくことです。

おすすめの参考書は、大学の講義でも教材として使われる「マセマ出版社のシリーズで、線の基礎的な学習に適しています。

 

また、エンジニアを指している人、あるいはすでにエンジニアとして働いていて、さらに上を指すために線をしっかりと学びたいと考えている人であれば、エンジニア向けの線参考書で学ぶのが効率的です。

まったく数学の知識がない方は、スクールの講座勉強会セミナーへ参加して理解を深めることもおすすめです。

 

エンジニアにとって線は必須の知識

機械学習エンジニアにとって、基礎的な数学は必要不可欠な知識です。

中でも線は、さまざまなジャンルに応用されている数学なので、文系出身のエンジニアでも身につけておいたほうがよい知識といえます。

を学んで、スキルアップや新しい分野の仕事に役立てましょう。

 

まとめ
  • 機械学習やAIを扱うエンジニアにとって線は必要不可欠
  • の基礎知識として、行列ベクトルの概念などを理解しておく
  • プログラミング言語Pythonと線を合わせて学習すると効率がよい

 

 

\ SNSでシェアしよう! /

【はたラボ】派遣のニュース・仕事情報・業界イロハ|派遣会社・人材派遣求人ならパーソルテクノロジースタッフ |IT・Web・機電の派遣求人ならパーソルテクノロジースタッフのエンジニア派遣の注目記事を受け取ろう

この記事が気に入ったら
いいね!しよう

【はたラボ】派遣のニュース・仕事情報・業界イロハ|派遣会社・人材派遣求人ならパーソルテクノロジースタッフ |IT・Web・機電の派遣求人ならパーソルテクノロジースタッフのエンジニア派遣の人気記事をお届けします。

  • 気に入ったらブックマーク! このエントリーをはてなブックマークに追加
  • フォローしよう!

関連記事

  • 【国内上場企業】予想通り?ITベンダー・サービス事業者ランキング

  • エンジニアも無関係じゃない?ホワイトカラーエグゼンプションとは

  • 息抜きに試しては?Googleが検索画面に仕込んだ「イースターエッグ」10選

  • 実際のところどう?ITエンジニアのシフト制勤務

  • Apacheだけじゃない。Webサーバーソフトウエアのトレンド

  • 40代からのIT派遣への転職!成功の秘訣とは

PAGE TOP