アウトプットで重みを調整

高橋諒氏(以下、高橋):Recurrent Neural Netはなにをしてるか。これちょっと説明が……時間、大丈夫ですかね。

インプットの単語が来た時に、これを隠れ層に入れて、最後はアウトプットで次の単語の確率ベクトルを与えます。その時に、1個前の単語を入力にした時と同じ、1個前の単語を入力にした時の隠れ層のベクトルを加えてあげて学習していくわけです。要するに、系列を見ていくわけです。

例えば、”私は犬が好きです”という文章が合ったとして、このtimeは時系列を表しているので、形態素解析したときの単語順に「私」「は」…という風に次々にinputに入れていきます。

そうすると、「犬」を入力としたときには、その前の単語「は」の隠れ層を利用しています。そうやって連鎖して見ていくと、更に「は」の隠れ層には「私」の隠れ層が利用されているって感じでつながっていくわけです。つまり、過去の系列すべてを理論上すべて加味して、ここの予測ができる。

ただ、いろいろ問題がありまして、あくまで理論上なんです。実際は「勾配消失問題」と言われるような、ここの重みを更新していく時に勾配が計算できなくなり、結果長期的に依存した学習ができないことはよく知られています。ですので、今回はそれに対応するためにLSTMと呼ばれる拡張手法を使っています。

LSTMを一言で説明しろと言われると、「人間っていらない情報を忘れますよね」という話になります。「忘れる」を組み込んだモデルと考えてもらえるといいかなと思っています。つまり、学習において意味がない=精度に影響がない単語についてはさっきの連鎖をしない、スキップさせるというモデルになっています。

最終的にどういうイメージかというと、「私は野球が好きです」という文章が来たら、1個ずつ単語を入れていくわけです。「私」「は」「野球」「が」という感じで入れていく。「野球」が入って来た時は、次は「が」なので、さらにその次を予測するようなアウトプットベクトルを出すように重みを調整していく。

これを学習したあと、予測フェーズで「私は野球に好きです」が来た時に、同じように「私」「は」「野球」と入れていくわけです。「野球」が来たら、ここのLSTMもそうで、過去のケースを学習しているので、「私は」という意味も加味しているイメージを持ってもらえればいいかなと思っています。

そうすると、次が「に」なんですけど。先ほどの学習データにあったように、「『私は野球』が来た次は『が』なんだ」と学習しているので、「『に』はちょっとおかしいんじゃないか」と気づくわけです。そこで、「逆に高い確率の単語はなんだ」をサジェストするようなイメージですね。

精度向上のためにいろいろ工夫はしています。テクニカルな話でいくと、Deep ResNetと呼ばれるような、深い層にした時に起きる問題に対応したり。もう一昨年ですかね、確かマイクロソフトが論文で発表していた手法というか、ロジックを使ったりしてやっております。

ちょっとデモをはさみますね。「システムの規格から開発運用まで」という、この「規格」という字が間違えていたり、助詞が間違えていたりするんです。でもその間違いをちゃんと見つけて、「“規格”じゃなくて“企画”だよね」「“に”じゃなくて、“を”だよね」を予測してあげるようなAPIになっております。

柔軟性ある答えを導き出すのは難しい

次は、今回のタスクにおける苦労についてです。それぞれのタスクに対応するDeep Learningのモデルやシステムを作れば作るほど人間ってすごいな、と痛感するわけです。僕は現状の技術だと、人間ほどの柔軟性を持って答えを導き出すのは難しいと考えています。

では、「AIやDeep Learningの何がすごいんだっけ?」という話をしていくと……。人間は、24時間起きているとだんだん疲れてくるわけですよね。効率も落ちてくる。ただ、機械は基本的には疲れない。人が見えない部分や見切れない部分を補うことができると考えています。

もう1つ。世に出回ってはいけない間違いのある原稿やクチコミを見つけるタスクを今回やっていたのですけど、責任がすごく大きいんです。半端な精度じゃ事業側を納得させることができないんですよね。例えば、「80パーセントぐらい当たるんです」と言っても、「じゃあ残り20パーセントはどうするんだ?」となるわけです。

そうすると、僕ら側としては死ぬ気でチューニングをしていくわけです。ただ、この下の話にもつながるんですけど、チューニングをしたところで100パーセントにはならない。AIは人間を完全にreplaceできるか、工数を0にできるかというと、現状は無理だと思っています。

そのため、今回は「最終的には人が判断するのだ」という立てつけで運用設計を行っています。ただ、何度も言いますが、人の工数を減らしたり、負担を減らしたりできるけど、完全に0にして機械が全部やるのはまだちょっと難しいんじゃないかなと思っております。

石川から話があったんですけど、私も同じ理由で「AI」という言葉があまり好きじゃないです。AIって、僕はもっとすごいものだと思っているんです。とはいえ、事業側のAIに対する異常なまでの期待はすごくあります。やはりバズワードなので、「AIをやっています」と言うと「なんでもできるんですよね」みたいな話になっちゃう。

でも、ほとんどのロジックが、実は教師有り学習と言われるような、あらかじめ正解のデータがあることを前提にして作られていたりする。そもそもデータがなければ、いいモデルを作ることができないんですよ。

難しいのは、先ほどの誤字脱字。誤字脱字の文章は、もう、うちの会社のデータベースに溜まっていないんですよ。求人のデータを溜めてはいるものの、正しい状態になった求人データしかないので、誤字脱字の実際のデータもないんです。

また、「データはあるから!プログラムにデータ放り込んだらいいんでしょ?」みたいな話あるんですけど、そんなことは全くなくて。タスクによっていろいろパラメータをいじったりするので、けっこう時間も手間もかかるんです。これからAIを利用してなにかビジネスにつなげたい人には、覚悟しておいてほしいところですね。

ノーフリーランチ定理と呼ばれるような、万能のモデルや万能のアルゴリズムはないんです。例えば、「さっきのConvolutionalがうまくいったから、例えばこういうタスクもできるんでしょ?」と言われても、できないことはないけれど難しくて。タスクごとに最適なロジックをまず選ぶ必要があります。

結局、現状AIはあくまで人間の補助にすぎない、と僕は思っております。なぜならAIは、人間がつけたラベルや書いた文章を学習しているからです。

この前の囲碁で話題になったAlphaGoも、すごいんですけど、もともとは人間が実際に打った棋譜を全部学習してやっているわけです。完璧な人間に近いものは作れるんですけど、人間なのでミスはもちろんあります。そこは念頭において、AIを使うべきなのかなと思っています。

データの価値はこれからどんどん向上していきます。今、ディープラーニングでプログラミングを書いたことがあれば、誰でも使えるような時代が来てるんです。だからこそ、データの質や量が勝負どころになりますよね。今、データ界隈では、そのあたりが共通認識なのかなと考えております。

私からは以上になります。続いて、弊社の白井から画像認識の話をさせていただきます。

(会場拍手)

CNNの概要と検索の支援

白井祐典氏(以下、白井):皆さん、こんばんは。僕からは画像の話をさせていただこうと思っております。あと、それをうまくやるための工夫もあわせてお話しさせていただきたいと思います。

まず自己紹介ですが、白井祐典と申します。リクルートテクノロジーズのビッグデータプロダクト開発グループというところにいて、Hadoopを使ったデータ解析や画像解析をやっていて、今は画像解析のメインの推進担当となっています。

今日は3つの話をしようと思っています。1つ目がCNNの概要、2つ目がCNNを用いた事例、3つ目が、それを使う時の苦悩と工夫の話をしたいなと思っています。

ここにいらっしゃる方がどういうモチベーションで来てるのかの把握はしていないんですが、大きく2種類ぐらいに分けられるんじゃないかなと思っています。1つは技術よりはビジネス寄りの方々。もう1つは、実際に手を動かすエンジニアや分析者の方々と思っていて。

両方にCNNの概要は持って帰っていただきたいなと思うんですけど。ビジネス側の観点で話を聞かれる方は事例紹介の話などを聞いていただいて、「自社のサービスでどうやって使うとおもしろいんだろうな?」みたいなイメージを湧いていただけるとうれしいと思っております。

逆に、エンジニアや分析者の方々には、苦悩と工夫を見ていただきつつ、技術的にどうやっていくといいのか、壁を乗り越えるヒントを持って帰っていただいて、少しでもお役に立てれば幸いです。

ということで、改めて本日の目次です。CNNの概要と検索の支援の事例紹介。それをやっている時の苦悩と工夫。最後にまとめとさせていただきます。

まず、CNNの概要からいきます。CNNとはConvolutionとPoolingを繰り返して画像から特徴抽出する処理です。

Convolutionとはなにか。こんなかたちで画像があった時に、左上から順番に局所画像を取ってくる。局所画像には各ピクセル値がありますので、このピクセルの値と重み行列の内積を取っていく作業がConvolutionになります。このパッチを左上から右下にかけて順番にやっていく。これがConvolutionの処理になります。

この時に大切なのが、重み行列です。例えば、この重み行列でいうと、左上と右下の重みがけっこう高いです。ということは、左上から右下にかけての斜めのエッジの部分のRGB値が後続に流れやすい。Convolutionは、そういったエッジやRGB値のどの値を重視するのかというところから特徴を作っていく処理になります。

続いて、Poolingの説明をします。Poolingは、Convolutionで得られた結果をまた同じように左上から順番に一部取っていきます。取ってきたら、その値を最大値や平均値に取って1つの値に圧縮する処理です。これも同様に左上から右下にかけて順番にやっていく処理になります。

なぜこんなことをするのか。画像の微妙な変化にロバストな影響を与えるからやるんです。例えば、「11」と書いてあるここの値が、ノイズが入っていて「33」「44」「50」になったとしても、最大値を取れば、結果は「72」で変わらない。ですので、ノイズが入ったとしても、結果にあまり大きな影響を与えないようにする。これがPoolingです。

ConvolutionとPoolingは1回ずつやって終わりではなく、何度も繰り返し、最終的に任意の次元のベクトルを作ることで画像を1つのベクトルへ変換をかけていくのがConvolutional Neural Networkです。

では、これをなにに使うのか。僕たちは物体認識によく使っています。例えば、野球とサッカーの画像をベクトル化して、くっつけてみる。そうすると、「上が野球っぽくて、下がサッカーっぽいね」と予測モデルが作れます。

学習で使っていない未知の画像を同じようにベクトル化すると、「いったいどっちのクラスに近いんだっけ」ということを計算することで、「ここに写ってるのはどうもサッカーらしいぞ」ということがわかります。

ここまでがCNNの紹介になります。

「あ、いいな」と思ったその瞬間が“検索の第一歩”

補足的にいうと、僕たちはインフラとしてはAWSをよく使っています。GCPも最近使ったりしています。一方、ライブラリですが、CNN用に使っているのはだいたいCaffeです。あとはKerasも使ったり、Lasagneも使ったりしているんですけど、だいたいこの「AWS×Caffe」を使っています。

続きまして、これを使ってどういうことをやっているかを2つ、紹介させていただきます。

まず1つ目は、ホットペッパービューティーの類似ネイルのレコメンド機能です。これ、なぜこんなことをしたのか、その背景から話させていただきます。本のページをペラペラめくりながらネイルを探すのって、楽しいらしいんです。……すいません、僕、男なのでわかんないですけど、事業の人によるとそうらしいんです。

「それをiPhoneとかiPad上でやるのって、けっこう楽しいんじゃないの? しかも、本とネットの差はレコメンドできるという部分。今見てるものに似ているやつをどんどんレコメンドしていくといいんじゃなかろうか?」みたいな背景があり、やりました。

実際に作ったものがこれ(アプリ画面)です。見ているものに対して、下に似ているネイルが出てくる。下に出てくる画像の中から1つ選ぶと、また下にその画像に似たネイルのレコメンドが出てくる。これをループすることで、回遊してもらえるようになります。

これをどう実現しているかといいますと、閲覧しているネイル画像があった時、まずは爪の箇所を特定して爪を取ってきます。そして、この爪に映っているデザインを判別するためのモデルを作っておいて、どのデザインが映っているのかを把握し、同時にRGB値の値を使って、どういう色合いが映っているのかを把握する。この2つを合わせて、類似度を計算して、似たネイルを探すことができるようになっております。

これまでは、ネイルを探す時にクライアントが付与したタグで検索をかけていくんですけれど、この機能があることによって、画像からネイルの色やデザインを抽出して、その両方を加味した新しい、もしくは近いものがどんどん探せるように、商品を検索するための方法を広げることができたと思っております。

続きまして2つ目、カーセンサーの写真から車種を判別する機能を紹介したいと思います。

こちらの背景としては、近年若者が車にそこまで詳しくないためかっこいい・かわいいと思った車があっても、「名前わからないから検索できない」みたいなことが多いんですね。これって、すごく大きな機会損失だなと思っています。そこで、「かっこいい」「かわいい」と思った瞬間にパシャッと撮ったら、車種がわかり、そのまま近場の中古車が検索できる機能をアプリに作りました。

この実現プロセスはものすごくシンプルです。車の写真が入ります。車種を判別するモデルがあります。写真をそれに通すと、「ワゴンRが写っています」がわかる。

ただ、これのタスクですけども。分類するカテゴリー数が2,674車種と、けっこう大きいんです。ですが、平均すると、だいたい70パーセント弱ぐらいの精度で判別することができております。

なぜこんなに多クラスでも高精度、なかなかの精度が出せるのか。学習データを作成する時に、工夫を凝らしました。

カーセンサーではたくさんの車画像を持っていて、1台あたり20枚ぐらいの画像があります。その画像には外装だったり、内装だったり、タイヤだったり、いろいろあるんですけれど。内装、外装、トランク、ダッシュボード、その他を判別するモデルを先に作って、カーセンサーの約40万物件の画像を全部これに突っ込む。外装と判断されたやつをそのまま学習に使う。だから、約80万枚の学習データをここで投入しています。

ただ、流通量が少ない車種は学習画像がないので精度がガタガタです。そこで、利用者に、あげてもらった写真に対して、車種名がわかる場合は、合わせてフィードバック機能を入れています。これによって、画像と、それから車種名が合わせて蓄積されていくので、追加で学習をすることが可能な仕組みとなっております。

この機能によって、これまでは車種とかモデルとかグレード、年式とかって、けっこうマニアックな知識がないと意外と検索しづらかったものを検索しやすくできたと思っています。ワゴンRとか、人気な車種しか検索できなかった人たちが、本機能があれば日常生活のなかで「あ、いいな」と思ったその瞬間が“検索の第一歩”となる世界観を作ることができたんじゃないかと思っております。

ということで事例紹介を2つ、さらっとお話しさせていただきました。

ビジネスサイドの要望に応えるために乗り越えるべき壁

続きまして、ここから先がリアルなところというか、苦悩と工夫です。ビジネスというよりも、エンジニア視点でお話しさせていただきます。

まず、なぜ苦悩が発生するのか。ビジネスサイドの期待値の高さです。別にこれはビジネスサイドの学びが足りていないからではないです。ビジネスの人たちは本当に、「自分たちはこの世の中をよくするためにどうすればいいんだ」と本気で考えています。本気で考えているがゆえに、期待値は自然と上がり、僕たちが上限だと思っているところを簡単に超えてきます。

ここで言いたいのが、期待値がすごく高いのは悪いことではなくて、僕たちとしても本当にできるかぎりその気持ちに寄り添いたい。寄り添わなきゃダメなんだと、自分は少なくとも思っています。

ただ、寄り添うためにも壁が結構あります。例えば、「教師データがない」「精度が上がらない」「柔軟な発想が必要」などなど。少し異色だと思いますが、ぶつかってきた壁の話を少しずつさせていただきます。

まず、教師データがない問題です。先ほど、実際の事例としてネイルの話をさせていただきましたが、これには爪単位の教師データが必要でした。そこで、立ち止まって考えたんです。「あれ? これってどこにあるんだっけな?」と。当然ながらそんなものはありませんでした。

自分たちで爪のデザインを学習データとして残すためのWebサイトを作って、20人ぐらいで4万枚の学習データを作っていくことを、この時はしました。

これが非常にしんどくて、「毎回これやるのか……」と思っていて。解決策を探していたところ、論文に解決策がありました。2016年のICLRの論文に、VATという半教師有り学習の手法の論文がありました。今回は、その方法を採用していたりします。

どういうものかというと、例えばラベル1のデータと、ラベル2のデータがあります。このあたりに境界線がありそうだとわかる。ラベルがない、教師なしデータをここにプロットして、これらをあえてこの境界面にずらしていきます。予測確率分布がもちろんずれるんですけど、この差が最小になるようなWとBを学習する手法になっています。

これによって、多少のデータのブレにも耐える判別モデルを作成し、少量の教師有りデータと大量の教師なしデータでけっこう精度高いモデルを作ることができる手法になっております。

続きまして、精度が上がらない系の苦悩です。精度が上がらない理由は、僕の経験上だいたい3つぐらいに分類されます。1つは学習データが足りない。あとは、ラベルの分割が足りないこととハイパーパラメータがイケてないこと。

正直に言うと、学習データ不足が一番陥りがちです。学習データが足りていれば、だいたい精度も足りるのでいいんです。でも、学習データやそれからラベルの分割をするのは、人の手でなんとかがんばらなきゃいけないところが大きいです。ただし、このパラメータを最適な値で探索するよ、というのは、機械に代替することができるので、自分たちは機械で自動化したりしています。

具体的にパラメータで悩んだ例なんですが。これがたぶん2〜3年前、毎回学習をするたびにパラメータの値をエクセルに記入しておいて、その時の精度をずっと残すことをやっていました。

100回以上やっていて。やはり学習に時間がかかるので、1回ごとに3時間かかっちゃうんですね。3時間×100を超えることをやっていると、時間がかかりすぎて大変だったという話があります。

それを今は自動で探索しています。パラメータの値をいろいろ変えると、誤差率がボコボコ変わります。ですが、最初は初期値をとりあえず与えて、前後にずらして、誤差率が下がる方向が見つかるので、そっちの方向に少しずつずらしていきます。ずらしていくと、誤差率が上がる瞬間があるので、「これ逆だわ」といって戻る。それを繰り返します。ただ移動距離がずっと一緒だと、ここで谷の底を行ったり来たりしてしまう。だから、移動距離を少しずつ減らして、極小値にたどり着くようなやり方をしています。

最近だとベイズ最適化を使ったパラメータ探索がかなり有名です。おそらく、そっちをやったほうがいいんじゃないかという気も、個人的にはしています。

3つ目です。柔軟な発想が必要、という話です。車種判別は、実は当初斜め45度の写真を僕は想定していました。それを使って、学習したモデルを事業に持っていったところ、「どの角度から撮った画像でも車種を予測できるようにしたいんですよね」と、笑顔で言われてしまいました。

もう、その瞬間に僕はいろんなこと考える始めるわけですよね。「いや無理でしょ」と考えるんですけど、先ほどちょっと話させていただいたとおり、入稿画像を使えば、真正面だったり後ろだったり横だったりと、いろんな角度から取れるということがわかったんです。「これを使えばどの角度からでもある程度判別できる」と思って、この難題に対応することができました。

繰り返しになりますが、ビジネスサイドは本気で考えているので、僕たちはその要望を聞いた時に「うわ、無理だ!」といきなり思わず、必死で「それを実現してあげる方法っていったいなんだろうか?」と考えるのが、僕はすごく大切なんじゃないかなと思っております。

あらゆる手段でデータ解析を使ってビジネスを向上

では、まとめです。CNNの概要と事例紹介と、それから苦労・工夫の3本をお話しさせていただきました。

画像解析によって、画像の要素でレコメンドや、日常生活のなかのワンシーンを利用して検索するような、既存の検索からさらに幅を広げた検索をすることができるようになってきております。

ビジネスサイドの期待値に全力で応えるべく、デフォルトで入っていないようなVAT、DFOを用いたパラメータチューニングの方法を取り入れたり、あとは、柔軟な発想をして、最大限ビジネスサイドのお手伝いをしていたりしております。以上です。ありがとうございました。

(会場拍手)

司会者:いつマスク取るのかと思ったら、最後まで取らなかったんですけれども。白井からの話は以上になります。

ということで、ここでもう1度、石川に出てもらって後編の話をしてもらおうと思います。

石川信行氏(以下、石川):どうですかね。みなさん。こういうふうに、メンバー一人ひとりがそれぞれいろんな思い、いろんなやり方で、事業の担当者と一緒にAIの活用をしているのが、我々ビッグデータプロダクト開発グループの現状です。さらに言うと、これが、リクルートグループ全体の現状であると思っております。

最後に簡単にまとめと、今後、我々がどういうことやっていくのかをお話しできればと思っております。

先ほどのDeep Learningの話や、半教師有り学習、自動ハイパーパラメータチューニングなど、すべて基本的にR&Dという枠組みのなかから生まれているものです。

このR&Dも、我々、内製開発や内製ロジックだけでやろうとはまったく思っていません。基本的に「ビジネスに活かせれば、手段は問わない」という方針でやっております。常に、いいものがあれば使いたいですし、それが社外のものの可能性もあります。自分で作るものもあると思っております。「あらゆる手段でデータ解析を使ってビジネスを向上していく」というのが、我々のポリシーになっています。

その一環として、日本国内の技術だけでなく、世界も見ています。とくに昨今、イスラエルやUSには頻繁に出張に行って、実際にスタートアップのみなさんと、……それこそ毎回20社とか30社のみなさんと会って、いい技術を持っているスタートアップとは、共同開発したり、そのまま製品を使わせていただいたりしています。

例えば、屋内位置情報測位や、インフラのオペレーションのAI化、あるいは、類似画像を使ったアフィリエイトを作っているシステムもあります。こういった取り組みをしている会社を見つけてお話しして、それがリクルート内で「例えばこういうサービスに使えるんじゃないかな」と思いながら、「まずは社内検証しましょうよ」と話を進めていたりしています。

例えば、これは Infuse Locationという会社なんですけど。これは大学院を卒業したばかりの2人でやってる会社なんです。普通の大きい企業だったらたぶん目にもかけないぐらいの規模なんですが、そういった企業とガッツリ組んで、我々のソリューションとしてエンハンス開発を深めて、屋内位置情報、建物のなかで何階にいるのかわかるとか、「お店にこう入りました」みたいなのがわかる。いわゆるGPSよりも「もうちょっと屋内に沿ったもので位置情報を取れますよ」ということを、技術提供を受けて一緒に開発しています。

こういったものをイベントとか、クライアントさんが持っている屋内のデータ解析に使えないかを目指して、共同開発をしています。

このように、手段は問わず、いろんな方向から情報や技術を集めて、リクルートグループ内のどこかに役立てることを目標にしながら、検討、開発、そしてR&Dを進めているのが我々のグループでございます。

先ほど高橋、白井も発表していましたが、我々のこのAI技術はカスタマーサイドだけじゃなく、校閲であったり、文章作成の補助であったり、あるいは画像解析のようにフロントエンドに関わるものもあります。リクルートの、リボン図と言われるカスタマーとクライアントのマッチングのモデルのいろんなシーンで役に立ってきています。

レコメンドだけではなく、内部の作業代替の話もあります。本当にいろんなシーンで使えるものがあります。そこを我々としてはどんどん開拓して、事業の担当者と一緒にやっていくのも目標だったりするわけです。

技術者もビジネス感覚を忘れてはいけない

ということで、我々は技術力だけじゃAI系の案件は装着できないと思っています。

最新の技術とか情報を集めることもそうですし、事業の課題、情報を集めるのも必要です。これに技術力をミックスさせて、さらにきちんと施策まで落とします。

ここで相当苦労するんですね。まさに精度を求められたり、「コストが……」といったお話もあるんですけど。ここをきちんと話し合いながら、ちゃんとデモを行ったり検証したりして、いろいろ情報を共有していければ、真実に向かって走っていく。一緒に並走していくところが重要です。こうした点を大切にしながら、AI系の案件を推進しております。

ということで、本当に最後です。大切にしたいことはこの3つです。

まずは、とにかく情報を集めましょう。これは持っている方が勝ちなんで、データ活用周りの商品や、ロジック、活用事例といった最新情報は、しっかりキャッチしていきたい。

次に、難しい課題、技術、けっこうあるんです。Deep Learningも最初は難しくて足踏みしていたところもあるんです。しかし、ここを一歩踏み込んでやってみると、自ずと活用のシーンが見えてくるとわかりました。なので、ここはどんどんチャレンジしていきます。

最後に、この分野は最近、コードのオープンソース化が進んでいます。そのため今後、競合優位性というのは……例えば、技術の保有ではなく、データであったり、それをどう活かすかという施策だったり、そのあたりにパラダイムシフトしていくんだなと思っています。やはりビジネス感覚を、我々技術者であっても忘れずにやっていくことが大切かなと思っております。

さて、ここで1つ速報ですね。この場で初めて言います。A3RTなんですけど、一部外部公開に向けた準備を進めています。おそらく3月中にはなにかしらご報告ができるんじゃないかと思っています。

なので、みなさんに一部だけですけれども、フリーで公開しようと思っています。ここに来たみなさんはぜひ3月中にこういうお知らせを耳にしたら、ぜひ使ってみていただければなと思っております。

ということで、今日はこれにて終わりです。ご清聴ありがとうございました。

(会場拍手)