はじめに高専専攻科におけるテンソルデータ処理
プログラミング教育の実践○ 山本 直樹*

石田 明男**

テンソルは，データ処理では多次元配列として利用される重要なデータ構造の１つであり，テンソル分解の形で信号処理，数値線形代数，コンピュータビジョン，数値解析，データマイニング，グラフ解析，神経科学など幅広い分野で応用されている．
ここでは，本校専攻科での講義で実施されているテンソルデータ処理教育の事例について報告する．
以下に，本報告中で利用される用語について簡単な説明を挙げておく．
（１） 本報告においては，テンソルは多次元配列のことを指す．
（２） 行列展開： テンソルを行列に展開する処理のこと．
（３） 畳み込み： 行列展開の逆の処理で，行列展開された行列をテンソルに戻す．
（４） モード積： テンソルと行列の積の演算のこと．
（５） テンソル分解： テンソルを低次元データの積や和などに分解するもの．
この分解の１つに高次特異値分解（HOSVD）がある．

村上 純*

熊本高等専門学校 * 電子情報システム工学系，** リベラルアーツ系

12

テンソルデータ処理（高階テンソル）の内容

テンソルデータ処理を実施する科目の概要• 科目： データサイエンス（本校専攻科電子情報システム工学専攻１年・後期，選択2単位）• 内容：（基礎） データの演算，行列演算，基本統計量計算，グラフ作成など（手法の学習） 主成分分析，因子分析，クラスター分析，線形・非線形回帰分析，自己組織化マップ，
決定木・回帰木，サポートベクターマシン，
高階テンソル，テンソル分解
テンソルデータ処理• 使用プログラミング言語： R• 基本的にはRを用いて上記内容の例題，ケーススタディに取り組む．

3講義内容
・高階テンソルの概要・定義

例題

・3階テンソルの生成
・3階テンソルのn-モード※ 今後、概要に高階を扱う意味・意義も含める予定
行列展開の処理・テンソル用RパッケージrTensor ・3階テンソルのn-モードの概要
積の演算
・n-モード行列展開の概要・定義・関数unfoldの仕様
・高階テンソルは3階以上
・n-モード積の概要・定義・3階を例に取り上げる
・関数ttmの仕様
・畳み込みの概要
・関数foldの仕様

学習教材（自学自習）
・独自開発された学習教材に取り組む．
・行列展開，モード積，畳み込みについて，Rで教材の解答を確かめながら学習し，より理解を深める．
※ スライド5～10の教材
例を参照

41

教材例13-mode

2115【問８】下図の3階テンソル𝓐と行列𝑼の2-モード積𝓐𝑼を求めよ。ただし、テンソル𝓐の要素について、〇内の値は色番号を示し、色番号のない要素値はゼロとする。なお、答えは色つきの立方体を配置して示すこと。

243-mode32( 3 )-mode

3
1

1

問１の解答

322( 3 )-mode

3

1

3階テンソル𝓐( 1 )-mode 21324353

マクマホン立方体による行列展開の例題と解答例

1( 3 )-mode

3220 00 11 011112-mode

524３26132

マクマホン立方体によるモード積の例題

2-mode132100

行列𝑼

633階テンソル𝓐( 2 )-mode

562313-mode

1232331654321 1 21 3
1 2-mode21433231231232-mode

123-mode上面

立体パズルによる応用問題

前面

𝑈21-mode

3561-mode

2-mode2131-mode

121003-mode

1-mode0101-mode001【問１５】問１４で作成された3階テンソル𝓐と図15(c)に示す行列𝑼の1-モード積を取ったとき、得られた3階テンソルを前面、上面、左面から見た透視図(図15(b)のような図)を求めよ。また、玉の入り方を1-モード行列展開で表せ。

41-mode𝑼𝓐𝑼 unfold 𝓐, 2, c 1,31

教材例3

モード積の解答例

問８の解答

732

61-mode1-mode1

教材例2【問１】左上図の3階テンソル𝓐において、次の行列展開を行ったとき、
unfold(𝓐, row_idx=1, col_idx=c(3,2) )右下図の( )内にモード番号と、セル内に行列要素の中身（色番号）を記述せよ。

33ttm 𝓐, 𝑼, 𝑚

図15(a) 問14の立方体2 と等しい

32
1123
左面

12

300
10 11 00 02-mode
図15(b) 問14の透視図

図15(c) 行列𝑼

82

問１５の解答

立体パズルによる応用問題の解答例

ttm( 𝓐, 𝑼, m=1 )1-mode321上面

1-mode3-mode

答えの透視図：次スライドのRスクリプト参照。関数modeSumを利用。透視
図とRの結果ではモードの方向が逆となる場合があり見方に要注意。

3-mode23-mode3121①2①3123# 問15library(rTensor)
U <- matrix( c(0,0,1,0,1,0,1,0,0),3,3 )A15 <- ttm( A14, U, m=1 )# 問14の3階テンソルA14を利用する
Ans15 <- unfold( A15, 1, c(3,2) ) # 答えの1-モード行列展開
Ans15@data
Ans15_f <- modeSum( A15, m=3, drop=TRUE )# 前面の透視図
Ans15_f@data# 行：1-モード、列：2モードで表示
Ans15_t <- modeSum( A15, m=1, drop=TRUE )# 上面の透視図
t( Ans15_t@data )# 行：3-モード、列：2モードで表示
Ans15_l <- modeSum( A15, m=2, drop=TRUE )# 左面の透視図
Ans15_l@data# 行：1-モード、列：3モードで表示

玉の入り方の1-モード行列展開表現
1①3-mode

3

1

2

①

3

①

①

前面

1
左面

1

2

3

2

解答例のRスクリプト

問１５の解答のRスクリプト

32-mode2-mode910

テンソル分解の例題
カラー動画像のHOSVD

テンソルデータ処理（テンソル分解）の内容
講義内容

例題

Truncated HOSVD・テンソル分解の概要（基礎： 簡単な数値データの分解）・高次特異値分解（HOSVD）の定義
・3階テンソルのHOSVD・HOSVDのアルゴリズム ※ スライド16参照 ・元の3階テンソルへの再構成処理
・関数hosvdの仕様
・コアテンソルの演算・テンソルのフロベニウスノルムの定義（応用： 画像・動画像データの分解）
・カラー画像のHOSVDの概要
・カラー画像（3階テンソル）のHOSVD
・動画像処理用Rパッケージimagerの概要
・元画像と再構成画像の比較，・画像の評価尺度PSNRの概要・定義
PSNR計算・カラー動画像のHOSVDの概要
・カラー動画像（4階テンソル）のHOSVD
・動画像編集用ソフトFFmpegの概要
・元動画像と再構成動画像の比較，・動画像データの前処理
圧縮率計算 ※ スライド12～14参照
・HOSVDの圧縮率の定義

Width: 512 pix Height: 290 pix
Depth: 86 Color channels: 3

Original
fourth-ordertensor 𝓐

113𝒮𝒮

𝑼

3

Reconstructed
fourth-ordertensor 𝓐

3Core tensor 𝓢𝓐

2021/1/20

Width: 512 pix Height: 290 pix
Depth: 86 Color channels: 383 𝑼

290 𝑼

1030 𝒮50

103050512 𝑼𝓢𝑼𝑼𝑼𝑼𝓐

データサイエンス（第１３回資料）

123

教材例4

テンソル分解の例題【例3-2】 RGB動画像のHOSVD

テンソル分解の例題
元動画像と再構成動画像の比較（例3-2の実行例）> play( recvideo2, loop=TRUE ) # 再構成動画像の表示# HOSVDの計算(サイズ50x30x10x3のコアテンソルを得るとき)
hosvdB <- hosvd( A, ranks=c(50,30,10,3) )recB <- hosvdB$est@data# 再構成動画の取得

recvideo2 <- as.cimg( recB )# 再構成動画をcimg形式に変換

play( recvideo2, loop=TRUE )# ビデオの再生

save.video( recvideo2, "rec_50x30x10x3.mp4", fps=30 )c_ratio <- 1-(w*50+h*30+d*10+s*3+50*30*10*3)/(w*h*d*s) # 圧縮率の計算
元動画像2021/1/20

データサイエンス（第１３回資料）

2021/1/20

13

データサイエンス（第１３回資料）

14

行列展開、モード積、畳み込みに関する理解度の確認

HOSVDアルゴリズムの実装状況の確認• 令和元年・２年度の受講学生にレポートにより確認した．
• HOSVDアルゴリズムの処理のイメージ図を提示し、3階テンソルの場合のHOSVDを実装するように出題した．ただし，関数hosvdは利用できないものとした．

• 令和元年・２年度の受講学生に筆記テストにより確認した．
• テスト問題は開発した教材の例題の中からアレンジして出題．

行列展開
畳み込み
モード積
全問正解

15

コアテンソルのサイズを50 30 10 3とした場合の再構成動画像（圧縮率：約0.998）

R1年度学生の正解率
受講者全体の約89%〃 約96%〃 約82%〃 約74%

R2年度学生の正解率
受講者全体の約94%〃 約97%〃 約88%〃 約84%• 実装状況
R1年度学生： 受講者全体の約93%が実装できていた．
R2年度学生：〃の約84%が
〃

164

17

まとめ

今後の改善

• 今回テンソルデータ処理教育の実践事例について報告した．
• 本教育の特徴：
教材や例題にマクマホン立方体，立体パズル，カラー画像・動画像を用いており，視覚的にも処理結果を確認しやすい．
• 行列展開，モード積などに関する理解度確認のテスト結果：
全問正解の学生が約7割以上あることから概ね理解できているものと考えられる．
• HOSVDアルゴリズムの実装状況のレポート確認：
約8割以上の学生が実装できていることが分かった．

• 初めに3階以上の高階を扱う意味や意義を理解させる．
• 比較対象となる同種の事例がないが，本事例をさらに改善していきたい．
※ 「テンソル分解」をシラバスで検索：立教大学，電気通信大学，京都大学，中央大学にあり※ ただし、本専攻科のように詳しくはなく，もちろんパズル等の利用もなし※ 理研のTensor Learning Teamは早稲田大学などでレクチャー※ 海外ではイリノイ大学アーバナ・シャンペーン校でかなり詳しく教えている（クイズ形式もあり）• 理解できなかった学生の分析と理解させるための工夫
・ TensorFlowなど、AI関係の基礎としてもテンソルデータ処理は大事
・ 3Dパズルなどを用いた学習支援ツールを充実させ教育に利用したい

185