『半導体業界の第一人者,AI業界を行く!』 Vol.8:Spresense でエッジAI -LASSOでボストン住宅データを分析-

『半導体業界の第一人者,AI業界を行く!』  Vol.8:Spresense でエッジAI -LASSOでボストン住宅データを分析-

こんにちは,HACARUS 東京R&Dセンター所属のエッジ・エバンジェリスト 田胡治之です.この連載では,半導体業界で長年知識や情報を得てきた私,田胡がこれまでと異なるAI業界に飛び込み,そこから感じる業界のニュースやトピックを独自の視点で紹介したいと思います.

今回は,ソニー製 Spresense を使ったスパースモデリングの一手法 LASSO 実験報告です.HACARUS Tech Blog 「Spresenseでスパースモデリング」[4] に続き,応用面を掘り下げました.

 

Spresense と開発環境

ソニーはSpresenseを IoT向けボードコンピュータと呼んでいます[1].Spresense の主要チップは,Arm社 Cortex-M4F 6コアと様々なI/Oを持つ CXD5602 と,パワーマネジメントとオーディオ機能を受け持つ CXD 5247 です(Figure 1).

CXD5602のアーキテクチャ面の特長は,Arm社 Cortex-M4F 6コアの浮動小数点演算を含む強力な計算能力と,6コアのパワー制御はもちろん,コア間通信フレームワークのサポートなどです.半導体製造技術には 28nm FD-SOI (Fully Depleted – Silicon On Insulator) を使っています.

この技術を使うとFD-SOIトランジスタのオン・オフ動作切り替わりのキレが通常のバルクシリコンを使ったトランジスタに比べて良いので,電源電圧をより低くでき低消費電力にできる特長があります.

筆者の知る限り,超低消費電力が重要な腕時計用ICでのFD-SOI採用例はありますが,Arm社 Cortex-M4F が載るような高性能MCUチップのカテゴリーでは聞いたことがありません.低消費電力とパワフルな計算能力の両方を狙った,ソニーらしい尖った製品と言えるでしょう[1] [2].

Figure 1 SPRESENSE™ 搭載LSI (CXD5602/CXD5247) 仕様[1]

Figure 1 SPRESENSE™ 搭載LSI (CXD5602/CXD5247) 仕様[1]

Spresense 実行環境には,Windows10 64bit ノートPCにインストールした Arduino 1.8.13 を使いました[3].Arduino の画面イメージを Figure 2 に示します.

C++プログラム(Figure 2 左)はPC上のArduino環境でコンパイルされた後,Spresense に自動的に転送され,Spresenseがブートされます.プログラムの入出力は,Arduino のシリアルターミナルを介して行います(Figure 2 右).

今回の米国ボストン市の住宅価格データ(後述)を入力とした場合の LASSO ADMM プログラム実行時間は1秒以下と短く,十分に実用的と感じました.

 

Figure 2 Spresense Arduino開発環境.左上:ソースコードウィンドウ,左下:コンパイル状況やメモリ使用量,右:シリアルターミナル.HACARUS開発 LASSO ADMMプログラム [5] 実行時の例

Figure 2 Spresense Arduino開発環境.左上:ソースコードウィンドウ,左下:コンパイル状況やメモリ使用量,右:シリアルターミナル.HACARUS開発 LASSO ADMMプログラム [5] 実行時の例

ボストン住宅データセット

解く問題を解説します.米国ボストン市の住宅価格について,価格に影響すると考えられる13個のパラメータを関連付けたデータがあります[6].データは506件あります.その一部を Figure 3 に示します.

住宅価格(MEDV) を目的変数 Y と呼びます.パラメータ13個を説明変数 X(1) ~ X(13) と呼びます.Figure 4 に説明変数と目的変数の意味を示します.例えば,X(1) は CRIM で「町別の1人当たりの犯罪数」を表します.

 

Figure 3 ボストン住宅データ [6]

Figure 3 ボストン住宅データ [6]

Figure 4 説明変数と目的変数の説明 [6]を日本語訳し加筆

Figure 4 説明変数と目的変数の説明 [6]を日本語訳し加筆

解く問題は,

Y の予測モデルとして,以下の重回帰式
Y = beta(1) x X(1) + beta(2) x X(2) ・・・+ beta(13) x X(13)
ここで beta(1) ~ beta(13) は回帰係数
を使う場合,

観測データ506件にもっとも良くあてはまる beta(1) ~ beta(13) を求める,です.

あてはまりの指標として,予測値と観測値の残差二乗和(SSE:Sum of Squared Errors of prediction) を使います.(Figure 5).

 

Figure 5 重回帰イメージ図と重回帰式

Figure 5 重回帰イメージ図と重回帰式

 

良く知られた統計学の重回帰分析(最小二乗法)を使って, beta(1) ~ beta(13) を求めることができます.

ここで疑問が生じませんか? 確かに重回帰分析の解は説明変数13個を使ったもっとも良くあてはまる解なのですが,説明変数13個は全て必要なのでしょうか?

13個の説明変数のうち,予測に本質的に重要な変数はどれでしょうか? この疑問に答えるのがスパースモデリング(Sparse Modeling)手法のひとつである LASSO です.

 

LASSO 結果と解釈

LASSO (Least Absolute Shrinkage and Selection Operator) は,スパースモデリングの代表的な手法で,仕組みは文献 [7], [8], [9], [10], [11] 等で解説されています.本稿ではボストン住宅データの LASSO 結果と解釈に焦点をあてます.

LASSO の重要なパラメータが,正則化パラメータ lambda(λ) です.lambda を大きくすると 0 と推定されるbeta(*)(* は beta(1)~beta(13) のどれかの意味)の数が多くなり,lambda を小さくすると 0 と推定される beta(*) の数が少なくなります[10].

lambda は広い範囲で変化させるため,グラフ横軸には通常 ln(lambda) をとります.lnは自然対数です.ln(lambda) を変化させた LASSO 結果を Figure 6 に示します.これは解パス(Solution Path)と呼ばれます.

beta(1) ~ beta(13) に対応した13本のカーブがあります.ln(lambda) が小さい(-5.0 など)と最小二乗法に近い結果となり,beta(1) ~ beta(13) が全てゼロでない値を持ちます.

ln(lambda) と,beta(*) がゼロの個数の関係を Figure 7 に示します.ln(lambda) = -5.0 では 0 なので全ての説明変数13個が予測モデルに使われます.

また予測値と観測値の残差二乗和(SSE)を Figure 8 に示します.SSEが小さいほど予測モデルのあてはまりが良いことを意味します.ln(lambda) = -5.0 では SSE = 24.2 です.

ln(lambda) を大きくしていくと,ゼロになる beta(*) 個数が増えてきます(Figure 7).例えば ln(lambda) = -2.0 では,LASSOが予測モデルに影響が少ないと推定した beta(3) INDV と beta(5) NOXの2個がゼロになりました.11個(全13個 – 2個)の説明変数が選ばれました.これを変数選択が行われた,と言います.SSEの値は,説明変数13個の時とほとんど変わっていません.

更に ln(lambda) を大きくしていくと,ゼロになる beta(*) の個数が更に増えてきます.ln(lambda) = 0.5 ではゼロになる beta(*) の個数は5個,SSE値は 30.5 です.これは全13個の説明変数を使った場合(ln(lambda) = -5.0 時)のSSE値 24.2 から 26% の増加です.

ln(lambda) = 1.0 ではゼロになる beta(*) の個数は7個に増え,SSE値は 33.7で約39.3%増加しました.更に ln(lambda) を大きくするとゼロになる beta(*) の個数は 8個に増えますが,SSEが急激に増加します.説明変数を減らしすぎて予測モデルのあてはまりが悪くなった,と理解できます.

もちろん目的によりますが,筆者は,ln(lamba) = 0.5 ~ 1.0 付近(薄緑色にシェーディングした領域)が,ゼロになる beta(*) 個数が 5 ~ 7個とそこそこ多く,一方で SSE値は全説明変数を使った場合に比べて26 ~ 39.3% 増加に留まるので,バランスの良いトレードオフと考えます.

ln(lambda) = 1.0 付近では,影響の大きい説明変数6個が選択され,残り7個の説明変数を無視しても,フィッティングエラーはあまり大きくならない,ということです.

選択された説明変数係数は,絶対値の大きさ順に,1位:beta(6)=RM= 2.57 (住居あたりの平均部屋数),2位:beta(13)=LSTAT= -0.593(給与の低い職業に従事する人口の割合),3位:beta(2)=ZN= 0.0629 (25,000平方フィート以上の住宅区画の占める割合),でした.

言い換えると,(1)部屋数が多く,(2)所得の高い人が多い地域(LSTAT はマイナス係数に注意),(3)大きな邸宅が多い地域,は家の価格が高い,という直感に反しない結果です.このように説明変数6個の疎なモデル(Sparse model)が得られました.LASSO と重回帰分析の比較を Figure 9 に示します.

 

Figure 6 解パス(Solution Path)

Figure 6 解パス(Solution Path)

 

Figure 7 正則化パラメータ ln(lambda) とゼロになったbeta(*)の個数の関係

Figure 7 正則化パラメータ ln(lambda) とゼロになったbeta(*)の個数の関係

 

Figure 8 ln(lambda) と,予測値と観測値の残差二乗和(SSE:Sum of Squared Errors of prediction)の関係

Figure 8 ln(lambda) と,予測値と観測値の残差二乗和(SSE:Sum of Squared Errors of prediction)の関係

 

Figure 9 LASSO と重回帰分析の比較

Figure 9 LASSO と重回帰分析の比較

まとめ

ソニー Spresense は,Arm社 Cortex-M4F 6コアの浮動小数点演算を含む高い計算能力と低消費電力アーキテクチャ設計に加えて 28nm FD-SOI半導体製造技術を採用したチップを使い,高い計算性能と低消費電力の両方を狙った魅力あるIoT向けボードコンピュータです.

Spresense で動作するHACARUS製スパースモデリングソフトウェア LASSO ADMM を使い,ボストン住宅データを分析しました.

Spresense上の LASSO ADMMプログラム実行時間は1秒以下と短く,十分に実用的と感じました.
住宅価格予測モデルとして,説明変数13個の重回帰式を採用しました.

LASSO 正則化パラメータ lambda(λ) の値をコントロールすることで解パスが得られ,「回帰係数13個中ゼロに推定される回帰係数個数」と「予測値と観測値の残差二乗和」間のトレードオフを制御できました.

ln(lambda) = 1.0付近で,予測モデルに影響の大きい説明変数6個が選択され,残り7個の説明変数を無視しても,フィッティングエラーはあまり大きくならないことが示されました.元の説明変数13個から説明変数6個を選択した疎なモデル(Sparse model)が得られました.

 

参考文献

[1] ソニー Spresense 製品情報
https://www.sony-semicon.co.jp/products/smart-sensing/spresense/

[2] SPRITZERがIoTを拓く。ソニーが新しいプラットフォームを提案
https://www.aps-web.jp/magazine/468/

[3] Spresense Arduino スタートガイド
https://developer.sony.com/develop/spresense/docs/arduino_set_up_ja.html

[4] 岸本,SPRESENSEでスパースモデリング
https://hacarus.com/ja/information/tech/sparse-modeling-on-spresense/

[5] GitHub hacarus/spresense-examples
https://github.com/hacarus/spresense-examples

[6] The Boston Housing Dataset
https://www.cs.toronto.edu/~delve/data/boston/bostonDetail.html

[7] 染田 貴志,機械学習プロジェクトにおける課題と,スパースモデリングに期待が高まる背景
ITエンジニアのためのスパースモデリング入門 第1回
https://codezine.jp/article/detail/10957

[8] 木虎 直樹,スパースモデリングはなぜ生まれたか? 代表的なアルゴリズム「LASSO」の登場
ITエンジニアのためのスパースモデリング入門 第2回
https://codezine.jp/article/detail/11148

[9] 増井隆治,スパースモデリングとは|仕組み・強み・ディープラーニング との違いを解説
https://ledge.ai/hacarus-sparse-modeling/

[10] 川野秀一・松井英俊・廣瀨慧,スパース推定法による統計モデリング,統計学One Point 共立出版,ISBN978-4-320-11257-5

[11] 宇佐見一平,スパースモデリングのモデルを評価する~LASSO推定値の評価方法
ITエンジニアのためのスパースモデリング入門
https://codezine.jp/article/detail/11593

 

ニュースレター購読Newsletter

登録はこちら