ITの展示会@幕張メッセ

幕張メッセでやっている何が正式名称なのか良く分からないITの展示会に行って来ました。お目当てはもちろん生成AI関係ですが、正直小粒なコバンザメ型の製品・サービスばかりでウンザリしました。GAFAとの差は開くばかりで、太平洋戦争の時、米軍がブルドーザーで一晩で滑走路を作っているのに、日本軍がツルハシとモッコで一月かかっていた状況と似ています。ちなみにジャストシステムも出展していたので生成AI関係の何かを開発しているか聞いてみましたが、やっていないとのことでした。

立花和夫著の「入門タグチメソッド」

立花和夫著の「入門タグチメソッド」を何とか読了。一部飛ばした所もあります。マハラノビス距離とかに言及している割りには、タグチメソッドについて、これまで2回くらい理解しようとチャレンジして挫折していますが、3回目でようやく触りくらいは理解しました。実験計画法はQC検定だと2級、タグチメソッド(ロバストパラメータ設計)は1級の出題範囲であり、はっきり言って難しいです。前の会社で、部下の20代の若手社員に4日間のタグチメソッドの研修に行かせたことがありますが、その若手も落ちこぼれていました。
この本は数式だけではなくて、具体例が豊富で、特に安定化電源回路を使っての、S/N比と感度の説明は分かりやすかったです。つまり10Vの直流電圧を出すことをゴールとして、それに対してばらつきを与える各抵抗の公差や使用温度条件などのノイズ要因の影響を最小にするパラメーターの組み合わせを求め、それが出来てから今度は目的の10Vに持っていく、という2段階の設計がタグチメソッドの本質のようです。その過程で、直交表というある要素と別の要素の組み合わせの実験で、何通りに値を振ればいいのかを教えてくれる表を用いて実験し、その結果を使ってパラメーターの組み合わせを絞って行く、ということのようです。
この本はマハラノビス距離についての解説もあり、ユークリッド距離とどう違うのかということも良く分りました。要は要素間に相関がある場合にその相関を考慮したのがマハラノビス距離であり、それによってあるデータが基準空間の平均に近いデータなのか外れたデータかを判別するのがマハラノビス距離だということです。2つの要素に相関が無い場合は、X、Y軸にそれぞれの要素を取ると、各データの分布は円形に近くなります。しかし2つの要素に相関があれば、円形が楕円になり、原点からのユークリッド距離が同じだったデータも、マハラノビス距離では差が出てくるということになります。

トークンと形態素

また生成AIネタです。
生成AIのLLM(大規模言語モデル)の中では、昔形態素と呼ばれたもの(形態素解析という意味で)がトークンと呼ばれているようです。
下記のページによればどちらも同じ意味とされています。
しかし、雑誌Interfaceの2023年11月号(「ChatGPTとプログラミング」特集)の解説によれば、英語だったらまず一文字一文字がトークンになり、それをいわゆる最長一致法的にn-gramで伸ばしていって、既に持っている語彙に一致すればそれをトークンとするという形で、ある文章のトークンへの分解が行われているようです。なので、形態素があくまで文法的な意味での文を分割する最小単位とすれば、トークンはもっと処理上の仮想的な分割単位という気がします。面白いのは生成AIのエンジンによってこの切り方が違うということで、Interfaceに載っていた例ではGPT-3.5は「処理される」を「処理/される」と切っていますが、GPT-4は「処/理/され/る」とより細かく切っています。「処理」を2つに分けて何がいいのか良くわかりませんが、「処分」とか「処置」とかの意味上の類似性のチェックとかがされているのでしょうか。
それから同じ雑誌に、デカルトが座標軸を発明して以来の、生成AIの元になっている理論の解説がありましたが、その中にはマハラノビス距離のことは一言も解説されていません。先日GPT-4にEmbeddingとマハラノビス距離の関係を聞いた回答のように、Embeddingにおけるマハラノビス距離は非常に重要な手法ですが、何故かそれを指摘している人を私はこれまで発見出来ていません。Interfaceの解説記事も本当に深い所まで分析したんじゃなくて、海外の英語等での解説記事をとりあえず集めてまとめただけという気がします。

P.S.
ずばり、ChatGTP-4に聞いてみたら、形態素とトークンは違う概念ですという回答でした。

=================================================================

 
User
生成AIでは文書を解析する最小単位としてトークンという概念が使われていますが、これは従来からある「形態素」(形態素解析)と同じですか、それとも別の概念ですか?
 
ChatGPT
「トークン」と「形態素」は似たような概念に思えるかもしれませんが、実際には異なる概念です。それぞれの違いを説明します。
 
形態素:
形態素とは、言語学の用語で、意味を持つ最小の単位です。日本語の場合、言葉を意味を持つ最小単位に分解したものを指します。例えば、言葉「食べる」は「食べ」+「る」の2つの形態素から成り立っています。
形態素解析とは、文を形態素に分解することを目的とした解析のことです。
 
トークン:
トークンは、テキストを処理する際の分割単位のことを指します。トークンは必ずしも意味を持つ最小の単位とは限らず、空白や句読点によってテキストを分割した単位を指すこともあります。
例えば、英語の文 “I love AI.” をトークン化すると、[“I”, “love”, “AI”, “.”] のようになります。
特に、多くのNLPモデルやシステムでは、特定のトークナイザーを使用してテキストをトークン化します。
形態素解析は、特に日本語などの複雑な言語を処理する際に有用な手法です。一方、トークンはテキスト処理全般において基本的な単位として使用されます。
OpenAIのモデル(例: GPT-4)では、多言語のテキストを処理するためのサブワードトークン化(一部の言語では形態素に近い単位になることもある)を用いています。このサブワードトークン化は、形態素解析とは異なるアプローチで、データから最適な分割単位を学習します。

教養としてのデータサイエンス

最近、データサイエンティストの養成が急務!とかいった論をよく見るので、データサイエンスに関する入門書を読んでみました。しかし悪い意味で予想が当たり、流行のIT用語を浅く広く紹介し、それに若干の統計学の初歩を付け加えただけの本でした。例えば実験計画法は注で2行の説明だけ。マハラノビス距離についてはまったく出て来ません。私には先日のDatabricksのセミナーでの大企業でのビッグデータとの格闘の例の方がはるかに参考になりました。

また、こんなの読むくらいだったら昔の数理統計学の本を読んだ方がよっぽどマシだとも思いました。写真は元々亡父(元高専の数学教師)の本で、私が情報処理技術者試験の一種を受ける時に、待ち行列などの参考書として持ち出したものです。1950年代後半から1960年代にかけての本です。

生成AIとConceptBase

ジャストシステムが2000年~2005年頃に販売開始した製品にConceptBaseというのがありました。
一言で言えば、類似文書検索システムです。ある文書と良く似た内容の文書を社内の文書ライブラリーから探して来るとか、FAQシステムとして、何かの不具合の解決方法を書いた文書を探すとか、そういうためのものでした。
その基礎になっている技術は、マハラノビスの汎距離と言って、ある文書の中の名詞系の語彙だけを抜き出し、それらの語彙に対して一種の分類を行い、分類の種類を一つの座標軸にし、単語の出現回数によって多数のベクトルを持った多次元ベクトル空間を作り、その重心を取ります。類似文書とはつまりその重心同士の距離が短いということになります。
これって実は今話題の生成AIのEmbeddingと呼ばれる技術そのものです。ただConceptBaseの頃は名詞系の語彙だけで多次元ベクトル空間を作りましたけど、今はトークンと呼ばれていますけど、名詞系以外の形態素も含めて分類情報を与えているのだと思います。
ちなみにChatGPT4にマハラノビスの距離とEmbeddingが関係あるか聞いてみました。回答はやはりその通りでした。

Q: 生成AIのEmbeddingは、マハラノビス距離と関連がありますか?

A: ChatGPT
はい、マハラノビス距離と生成AIのembeddingには関連があります。マハラノビス距離は、特徴空間において、データの分布を考慮して2つの点またはデータセット間の距離を測定する方法を提供します。生成モデルのembeddingは、高次元データを低次元空間にマッピングし、データ間の関係を捉える役割を果たします。
具体的には、生成モデルが学習する過程で、データの内部構造やデータ間の関係を学習し、これらの情報を低次元のembedding空間にエンコードします。マハラノビス距離を利用することで、この低次元空間においてデータ点間の相対的な距離をより適切に計算し、クラスタリングや異常検知、類似度計算など多くのタスクを効果的に行える可能性があります。マハラノビス距離は、特にデータの分布が正規である場合や共分散行列が利用可能な状況で有用です。

ちなみにこのマハラノビス距離は、品質保証の分野でも、田口メソッドと組み合わせたマハラノビス・タグチ法として、機械などの運用中に起こりうる不具合の時期を予測する技術としても使われています。

Amazon Linux 2023でvsftpdで10.5MiB以上のサイズのファイルがアップロード出来ない。

会社でExmentを動かすため、アマゾンのAWSのEC2という仮想サーバーでAmazon Linux 2023のサーバーを構築しました。(構築しました、と言っても、すぐにターミナルソフトでログイン出来る形で提供されます。)
このサーバー上でvsftpdを動かしてFTPサーバーとしたのですが、何故かクライアントからアップロードした場合、サイズが10.5MiBを超えるファイルは転送が止まりエラーになります。ちなみに私の家のサーバー(AlmaLinux 9)につなぐと問題ありませんので、クライアントや会社のファイヤーウォールの問題ではありません。
色々調べてみたのですが、Amazon Linux 2023自体がまだ公開から半年くらいからのせいか、Web上には情報がありませんでした。

取り敢えず以下の代替案は見つけました。
1.クライアントとしてWinSCPを使う。
2.プロトコルをftpではなくscpにする。
3.https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html?fbclid=IwAR0zkJ-x5x3ZS6xntB9q-vppMKDSGEcMJvpMGM8nDptqs1KtMDRNg2D9Rf より、puttygen.exeをダウンロードする。
4.puttygen.exe を使い、pemファイルからppkファイルを作成し、それをWinSCPの認証の所に設定。

3、4、が必要なのは、EC2のサーバーはログインの時にIDとPW以外にPEMファイルを使います。ところがWinSCPはPutty形式しか受け付けないので、3のツールでPEMからPPKファイルを作る必要があります。WinSCPはAmazonのS3もサポートしているので、持っておいて損は無いと思います。

なお、ファイル数が少なければ、TeraTerm(EC2にはベータ版が必要)でサーバーにつないだ後に、その窓上にファイルをドロップすればアップロード出来ます。この場合もプロトコルはSCPです。

ついでに、これまでCentOS他のLinuxを使っていて、Amazon Linux 2023を初めて使った人が最初にとまどうのは、firewalldが入っていないことです。別にdnfで入れればいいのですが、ポートの開け閉めは別にセキュリティーグループというのを設定してそこでやるのがAWSのec2のスタンダードなやり方になっています。

kintoneとExment



6月から勤めている会社で今は取り敢えずITの仕事しています。そこであるデータベースを作ることになりました。データは20数年分あるのですが、その入力がExcelでされていて、入力チェックがほとんど入っていません。そのためデータの揺れが非常に大きいまま、最終的にはkintoneのアプリの中に収録されています。それでまず入力はBPM(Business Process Management)のツールである、Questetra BPM Suiteを使うように変えました。Questetraは入力欄を正規表現で規制出来るので、非常に強力な入力チェックが簡単に実装出来ます。またXML形式のリストデータを参照してそこから選んでデータを入れることも出来ます。そしてQuestetraには、最初からkintone連携というのが用意してあったので、最初はこれを使って自動的にkintoneのアプリにデータを書込めばいいかと思っていました。ところが、kintoneにはコースが2つあり、今の会社で使っているのは安い方で、これには外部連携機能がありません。外部連携機能を使うためには、高い方のコースに全アカウント切り替えないといけません。それでそこまでしてkintoneを使う価値があるかどうか調べました。その結果、「kintoneって一体何の役に立つの?」という疑問が湧いて止みませんでした。

kintoneの問題点はというと、
(1)データベースのツールのように宣伝していますが、リレーショナルデータベースではまったくありません。従ってデータが増えれば増えるほど管理が面倒になり、スピードも低下します。主キーの設定とかリレーションの設定も当然ありません。トランザクション処理(一連の複数のデータベース操作処理のこと)も出来ません。
(2)普通何かのマスターテーブルを参照してデータを入れる、というのはデータベースの基本中の基本ですが、kintoneだとこれが「ルックアップ」ということになっています。しかし、ルックアップは別のアプリのデータを一度コピーしてそれを参照するだけのものであり、元のアプリのデータが変更されても、それはコピーした側のアプリには自動的に反映されません。
(3)データの容量も1アカウント当たり5GBしかありません。
(4)見た目のカスタマイズも機能が限定されていて、データの一覧が見にくいです。今の会社では皆結局CSVをエクスポートして、Excelで見ています。
(5)入力の制限に正規表現がサポートされていません。

kintoneを作っているのはサイボウズですが、ここの開発のトップのH氏は元ジャストシステムの方で、私と同じ頃在籍されています。しかしその方が所属していたのはJOSSというグループウェアのチームです。なのでサイボウズのガルーンというグループウェア(今の会社で使っています)は笑ってしまうくらいJOSSとそっくりです。でもガルーン自体はそんなに悪くありません。しかし、kintoneは「なんちゃってデータベース」ツールであり、私に言わせれば「ゴミデータ作成ツール」です。

それでどうしたかと言うと、結局kintoneを止めて、前の会社で使った経験のあるExmentに変えました。これは前の会社であるデータベースを操作するアプリを開発するのに、ある開発会社から提案されたもので、これを使うことで開発費を半分に抑えることが出来ました。また、ExmentはMySQLを使うWebアプリの開発ツールであり、当然ちゃんとしたリレーショナルデータベースのアプリが簡単に作れます。今実際にExmentでデータベースアプリを作り始めましたが、生産性は非常に良いです。kintoneのコース変更は止めて、そのお金でAWSのEC2サービスでAmazon Linux 2023を動かし、その上でExmentを動かしています。前の会社ではExmentのインストールはその開発会社にやってもらいましたが、今回は自分でやりました。サーバーのその他の設定も含めて3日もかからず構築出来ました。大事なことを言い忘れましたが、Exmentはオープンソースのツールであり、一つの会社で一つのサイトを使い、また開発元にカスタマイズを要求しない限りは無償です。カスタマイズはプラグインを開発することで無償のまま可能です。私としてはkintoneよりもExmentを強くお勧めします。自分で開発するのが敷居が高ければ、NTTデータCCSという会社が構築サービスをやっています