CISSPでは最近のトレンドとなっている技術が問題に出ることもあります。この講座では、ブロックチェーンと人工知能について取り上げていきたいと思います。ただし、最新のトレンドが出るといっても、「ブロックチェーンの中のヘッダーを答えよ」とか、「人工知能を実現する深層学習において重荷付けを正規化したい。シグモイド関数はどれか?」とか、実現するための技術や公式のようなものは、セキュリティの範囲から逸脱していますから、試験問題としては出ないだろうと思っています。あくまで、問題文の題材としてブロックチェーンや人工知能というワードが出る程度かと思います。そのため、多少テクノロジーには触れますが、「こんなのあるんだ、ふーん」程度で大丈夫です。それでは入ってきましょう。
ビットコインは日本でも話題になっています。銀行に頼らず、今までのお金のように使えるということで、未来の通貨と言われています。ですが、私たちは意外とその仕組みを知りません。どんなテクノロジーに支えられているのか見ていきましょう。
銀行システムの中央集権型の台帳管理システムでは正しい台帳は一つであり、その台帳を完璧なセキュリティで守る設計になっています。これは銀行のシステムを利用者側が完全に信頼しているからこそ、その台帳を信じて、頑張って稼いだお金を預けています。一方で、ブロックチェーンは非中央集権型の台帳管理システムであり、取引母体ごとに台帳を持っています。そのため、銀行破綻がどうたらといった問題から解放されます。ただここで問題となるのは、「なぜ分散している台帳の完全性が保たれているのか?」ということです。
ブロックチェーンざっくり理解ユーザーに最も多い解釈は「取引台帳を他の人に共有しているから改ざんがばれる」というものです。部分的には正しいですが、ただこの解釈だと新しい取引が発生したとき、その取引内容が正しいと判断するには不十分です。もしあなたが10コインもらう取引をしてもらった場合、その10コインを使いたいでしょう。しかし、実はそれはある人が自分だけに伝えた情報であり、他の人は「あなたは10コイン貰ったと聞いていない」というかもしれません。こうなると、共有された台帳にはならず取引を続けることができません。台帳を共有しているだけではなく、”今までの取引履歴が正確に台帳に記録されていること”、そして”他の人の台帳にもそれが記載されていることを認識していること”が必要です。その実現方法を見てみましょう。
分散している情報の信頼は厄介
ここで、ハッシュ関数というものが登場します。ハッシュ関数は任意の文字列に対して固定長のビット列を返却する関数です。CISSPでは、暗号化技術ドメインで登場します。ハッシュ関数によって計算された値は同じインプットであれば同じアウトプットになりますが、少しでも異なる値だと全く異なるアウトプットを出力します。そして、アウトプットからインプットを推論することはできない不可逆暗号です。ブロックチェーンではこのハッシュ関数を使います。
ここからは台帳のことをブロックと言いましょう。各ブロックで取引履歴とブロックの情報に特定の値を付け加えて、先頭の数個のビット列を0になるように調整します。ハッシュ値は不可逆暗号であるため、先頭の数個の0であるビット列から元の取引履歴を計算することはできません。つまり、地道に適当な値を入れて調整するしかありません。この地道な処理によって導かれた値をナンスと言います。
各ブロックでナンスを算出し、そのハッシュ値を次のブロックに連携します。そして、そのブロックはさらに次のブロックに自分のハッシュ値を渡します。こうして、ブロックを数珠繋ぎにします。これを、「ブロックチェーン」といいます。つまり、ナンスを見つける作業は、暗号資産の取引データが正しいことを承認し、ブロックチェーンにつなぎこむ作業になります。
この頑張って計算するのは取引する本人とは限りません。計算する人(機構)をマイナーと言います。世界中から「こんな取引したよ」という情報が送信され続け、その情報をキャッチして、適切なナンスを計算します。マイナーからの受信を基に、自分の台帳を変更していきます。
マイナーはハッシュの不可逆性により、ナンスを見つけるためのプロセスをアルゴリズム的に早めることはできません。コンピューター性能で多少差が出たり、運よくナンスが早めに見つかるかもしれませんが、マイナーが自分以外にも大量にいるため、自分だけナンス値を早めに見つけ続けるということは、他のコンピューターの計算に押しつぶされてできません。
例えば、過去のデータが改ざんされたことを考えてみましょう。過去データを変更すると、そこから算出できるハッシュ値は全く異なるものになります。もしも、変更したい場合には、そのデータのあるブロック以降の全ブロックのナンスを再計算しないといけません。取引が常に続いていることを考えると、今までの取引+追加分のナンスを計算しないといけないので、相当無理な話になってきますね。自分の台帳は書き換えられないことがわかります。
では、自分の台帳を書き換えるのではなく、偽の取引を送信したらどうでしょうか?確かにナンスは頑張れば見つけられる値ですから、本来の取引ではなくともナンスを見つけられれば、嘘の取引を送信することができるでしょう。実際にそうです。そこでブロックチェーンでは、最も計算量の多い台帳を正しいと判断します。ナンスの算出(マイニング)には一定の作業負荷が伴っています。不正な取引のナンスを算出し、それを発信出来たとしても他のマイナーからの発信の方が圧倒的に多くなります。不正な取引をしようとしても、他の全てのマイナーの仕事量をこなすことはできないため、正規の取引を上回る偽の取引を発生させることができません。このようにして、台帳の完全性を同程度の仕事量からなる多数決で決めています。この仕組みを「Proof of Work」と言います。これにより、取引履歴の完全性は保たれ、他の人から偽の取引を教えられていても遡って修正されるため、分散した台帳で取引する環境が提供されます。
人工知能(AI)とは、機械が示す知能であり、学習や問題解決といった人間の頭脳と関連付ける認知機能を機械が模倣する場合に使われます。人工知能という言葉は、1956年にアメリカのダートマス大学で開かれた研究会議で生まれました。昨今では、今までにない美しいタッチの絵を一瞬で書いたり、信頼のある友達のようなナチュラルな会話を実現するサービスも登場し、世間を驚かせています。
人工知能を技術的に実現するいくつかの方法があります。従来の人工知能の実現方法はエキスパートシステムというもので、主にif-thenルールとして表現された知識を推論することで、複雑な問題を解決するように設計されているモノでした。質問と回答のセットを事前に用意しておき、一つの回答が得られるまで質問を繰り返します。構造はシンプルです。エキスパートシステムは2つのサブシステムに分かれています。知識ベースは事実とルールを表します。推論エンジンは、ルールを既知の事実に適用して推論します。知識ベースに蓄えられたルールに従って、推論エンジンが最もらしい回答を探します。しかし、懸念点としては知識ベースにないものは、データがないものとして範囲外として扱われ、対応できないという特性がありました。
質問に答えていくことで解答にたどり着くサービス
こういった従来の対応できないケースがあるのに対して、与えられた情報で分かりうる最もらしい回答をする仕組みが求められました。そこで、機械学習が登場します。機械学習とはデータを分析する方法の1つで、コンピューターが自動で学習し、データの背景にあるルールやパターンを発見する方法です。機械学習と人工知能は似ている言葉ですが、人工知能を実現するためのデータ分析技術の1つが機械学習になります。
機械学習を知るうえで、教師あり学習と教師なし学習の概念を知っておきましょう。教師あり学習では、データに対する正解を与え、答え合わせを繰り返し行い、どのような観点をどのぐらいだった時に正解とみなすかを学習します。教師なし学習では、データに対する正解を与えず、入力したデータからパターンを見出します。具体的に、リンゴの写真を使った機械学習を考えてみましょう。収穫したリンゴ一つ一つを出荷できるか、傷んでしまい出荷できないものかを判断するとき、出荷できるリンゴの画像と、出荷できないリンゴの画像を機械学習でパターンを覚えさせることになります。この結果と入力データが紐づいており、対象データがどのグループに属するのかをあらかじめ教えてあげるのが教師あり学習になります。その一方で、リンゴの写真だけを機械学習の入力値として、決められた特徴から差を見出し分類すること、つまり結果ではなく分類をすることを目的にした学習方法を教師なし学習と言います。リンゴを分類するということは品種を調べるのに使えそうです。同じ学習でも微妙に意味が異なりますので、覚えておきましょう。
路上の片手袋という結果を教師なし学習で分類していく。
機械学習の中には、人工ニューロンという概念があります。人工ニューロンとは、人間の脳の神経細胞を見習い、複数の入力を引数としてその引数に対していくつかの算術を行い、ある数値を出力します。さらに、ニューロンネットワークでは、多数の人工ニューロンを複数の層に分けてつなぎ、情報を処理します。信号は最初の入力層から最後の出力層まで、時には複数の層を経由して伝わります。
この人工ニューロンを多層化した概念が、ディープラーニング(深層学習)です。ディープラーニング以前は、どの特徴に注目するべきかを人が指示する必要がありました。リンゴの教師あり学習の時にも、表面のつやや色の深みなど、答えをどんな指標で判断するのかという軸を人間側が教えてあげる必要があるのです。ディープラーニングでは大量の画像を読み込ませることと粒度の細かい評価によって、注目すべき特徴を決定することができます。具体的には、ディープラーニングの学習段階では大量の画像を読み込ませる作業を行います。ある写真を読み込ませれば、特徴とは言えない程の粒度に分割します。その分割された要素一つ一つがどのニューロンを通るのかを観察します。通った経路のニューロンは次第に太くなり、つまりより高い重み付けが行われ、その画像どこを見てある結果に至るのかという特徴となるわけです。一般的に画像を学習する際の人工ニューラルネットワークでは、入力層に近い層では元の画像を単なる図形として解釈しますが、より本質に近い出力層に近い層では、複雑な形状に対応する信号として扱えるようになります。
人工知能は我々をどこに連れていくのか?
とても便利なディープラーニング(深層学習)ですが、懸念もあります。代表的なものを2つ紹介しましょう。一つは、ディープラーニングを行うには正解つきのデータを数万個用意する必要があることです。事前に正解と判断する結果付きデータを、個人情報に保護された範囲で蓄積されている必要があり、医療などの分野では過去のデータにさかのぼって個人の承諾を取ることは性質上難しいですし、検査結果が正確なものでなければなりませんので、改めて大規模に検査の不備を探しに行くような形になりかねないので困難になります。そのため、人工知能のデータとしての母数を確保するために、ダミーデータを扱うことで意図的にデータ数を増やす努力がなされます。
2つ目は説明可能性です。ディープラーニングで得られた結果に対して、なぜその結果を選んだのかということは説明されません。どのニューロンを通ってきたのかは分かりますが、各ニューロンは結果を説明するにはあまりにも部分的です。人工知能が「この薬を患者に勧めてください」と医者に情報提供したとき、医者自身がその提案に疑問を持ったとしても、人工知能からはなぜそれを選択したのかは説明されませんし、医者自身が納得していない薬を患者に提供してよいのか、というのは難しい判断です。そのため、人工知能に対して、信頼し、納得する必要が出てきます。このような、人工知能の思考の理解しやすさを“説明可能性”と言います。
#ブロックチェーン #人工知能(AI) #エキスパートシステム #機械学習 #人工ニューラルネットワーク #ディープラーニング #遺伝的プログラミング(GP)