AIによる会計不正の検出

監査法人でも、AI開発が進んでいるようです。

あずさ監査法人が2023年8月に、生成AIを活用した監査向けソリューションを開発したそうです。一橋大学と共同開発し、特許も2件取得しているようです。

トーマツも、9月から、AIを使って企業の財務情報を監査する取り組みを本格的に始めるとのことです。2023年1月に特許も取得しています。

これらの特許を見ました。内容を読むと、どちらかというと、特許を取りました、というアピールの面の方が強いという印象を受けました。というのも、容易に回避可能と思われるからです。どうしてもその方法でなければ実現できないかというと、そうとも言えません。AI技術は日々進歩しているので、すぐに陳腐化してしまいます。Stable-DiffusionやChatGPTのような画期的な技術が出てくれば、前提がガラッと変わってしまいます。

あずさ監査法人の2件の特許について感じたこと。

特許第6667865号「会計情報処理装置、会計情報処理方法及び会計情報処理プログラム」

請求項が全部で20項目あります。その最初の請求項を見てみると、

【請求項1】
  単一の企業の単一の期間の財務データに含まれる複数の勘定科目の値を示す複数の変数と、前記複数の変数の1つに訂正があったことを示すラベル情報と、を少なくとも含むレコードを、複数の企業及び複数の期間に対応する分だけ含むデータセットを生成する会計データ生成部と、
  前記データセットに含まれるレコードの変数の欠損値にかかる処理を行う欠損値処理部と、
  前記データセットに含まれるレコードから、ノイズとなるレコードを除外するレコード選別部と、
  選別されたレコードについて、変数ごとに値を正規化する正規化処理部と、
  正規化されたレコードを分割して、訓練用データ、モデル選別用データ及びスコア算出用テストデータを作成するデータ分割部と、
  前記訓練用データを用いて、L1正則化項を離散的に変化させながらグラフィカルlassoによる回帰分析処理を行って訓練済みモデルを取得する回帰分析部と、
  取得した前記訓練済みモデルを用いて前記モデル選別用データに含まれる各変数の異常度の検出精度を評価し、前記検出精度に応じて前記訓練済みモデルの前記L1正則化項を特定し、特定した前記L1正則化項に対応する前記訓練済みモデルを、評価対象となる企業の会計データの変数の不正の検出に用いる評価用モデルとして決定する検出精度評価部と、
  前記評価用モデルを用いて、未知のデータセットに含まれるレコードの異常度を算出し、不正の蓋然性が高いレコードを検出する異常度出力部と、を備える、
  会計情報処理装置。

という感じで、非常に長いです。ちなみに、請求項は、基本的には、最初の請求項1を回避できれば、他は読む必要がなくなります。なぜなら、請求項2では、

【請求項2】
  前記欠損値処理部は、前記データセットに含まれる複数の前記レコードの各変数の前記欠損値が所定の割合よりも多い場合には、前記欠損値が所定の割合よりも多い前記変数を前記データセットから除外する、
  請求項1に記載の会計情報処理装置。

というように、ほとんどの場合、「請求項1に記載の」という文言が入るので、請求項1が当てはならないなら、自動的に以下も当てはまらなくなるからです(たまに独立した請求項もありますので、最低限、依存関係は見ておく必要があります。この特許でも、請求項19、20は独立しています。ただし、内容的にはほとんど同じ)。

一般的にこのような長い請求項は、回避が楽です。どれか一つでも当てはまらなければよいので、項目が多いほど回避がしやすくなります。逆に厄介なのが非常に短くてシンプルなものです。

例えば、上記の請求項の場合、「訂正があったことを示すラベル情報」を省けば問題ありませんし、「グラフィカルlasso」を使わなければ済んでしまいます。

わたしの立場では、逆にこういう方法で検知している、ということがわかるので、大変参考になります。

特許第7146218号「情報処理装置、情報処理方法及びプログラム」

これは複数企業に対応できるようにしたもののようです。これは請求項が13項目あります。これも最初の請求項1を見てます。

【請求項1】
  多次元ベクトルで各企業の情報が表された各企業の財務諸表に含まれる複数の勘定科目の値を示す複数の変数、各企業の属性情報及び各企業が不正を行ったか否かを示す情報と、企業間の取引関係を示す情報と、が含まれる学習用データを読み込んで、1つのクラスタあたりに含まれるノード数が所定値以下になるようにクラスタリングし、各クラスタに対応するノードとノード間の取引関係を示すエッジとで構成されるネットワーク構造を取得するクラスタリング処理を行うクラスタリング処理部と、
  前記クリスタリング処理後のデータに含まれる各クラスタに属する各ノードの特徴量を算出し、算出した特徴量に基づいて各クラスタの特徴量を算出する特徴量算出部と、
  各クラスタに属するノードの前記不正を行ったか否かを示す情報に基づいて、当該クラスタに不正フラグを付与する不正フラグ付与部と、
  前記不正フラグが付与されたデータを、前記特徴量を説明変数、前記不正フラグを目的変数として教師有り学習することで学習済みモデルを取得するモデル構築部と、を備える、
  情報処理装置。

これも、クラスタリング処理をしなければ済みますし、「教師なし学習」を使えば回避できます。

トーマツの特許について感じたこと。

特許第7216854号「情報処理装置およびプログラム」

これも、まず請求項1を見てみます。

【請求項1】
  一の事業者についての複数の決算期に係る財務データを取得する取得手段と、
  該取得した財務データに基づいて生成される勘定科目ごとに、当該勘定科目に係る値の推移を示す推移情報を抽出する抽出手段と、
  該生成された情報に基づいて、前記一の事業者による会計処理における不適切性を判定する判定手段と
  を有し、
  前記判定手段は、
  該抽出された推移情報に基づいてアンダーサンプリングを行って複数のデータセットを生成する前処理手段と、
  前記前処理手段から出力された複数のデータセットがそれぞれ入力される複数の弱学習器であって、複数の事業者についての前記財務データに基づいて前記不適切性を示す指標を出力するための学習モデルを構築するための弱学習器と、
  前記複数の弱学習器からの出力をバギングして前記不適切性を示す指標を算出するバギング手段と
  を有し、
  各勘定科目について算出された前記指標に基づいて、勘定科目ごとの貢献度を示すSHAP値を算出する、

情報処理装置。

読んですぐに思いつくのは、「SHAP値を算出」しなければよい、ということです。SHAP値は、予測値に対して、「予測値に対して、それぞれの特徴量がどのように影響を与えたか、その寄与度」を算出したものになります。

また、「出力をバギング」するのではなく、「出力をブースティング」するのでもよいですね。

なお、請求項5も独立しているので、きちんと読み込む必要がありますが、内容的には請求項1とほぼ同じ感じです。

もちろん、モデルによる精度の問題はありますが、現状では異常検知システムはまだ発展途上とも言えるので、これから続々と新技術が出てくるでしょう。現状のモデルの陳腐化も早いと思います。

なお、わたしは、これらとは違うモデルで、作成しています。異常検知の世界は面白いです。

目次