\(X\)の値を要素に持つ列や族\(x\)が与えられたとしよう.これが,添字集合\(L\)で添字付けられて定義されているとしよう.つまり,\(x\in X^L\)という状態だ.python ではおなじみのリスト(自然数を添字にもつ列)に対して演算を行い,結果を返す関数の定義方法をここでは紹介する.例えば,\(f\)を任意の列\(y\)に対し,総和を取る関数とすれば,それは次のように定義できる.
平均を\(g\)としたら,次の通り定義できる.
列から添字の集合を復元していることが特徴的である.
いったいこれらの関数はどの空間で定義されるのか,ということについて述べておく.文書中に現れうる任意の添字の集合を\(\hat{\sL}\),同じく現れうる任意の値の集合を\(X\)として(もちろん演算が適用できる範囲の集合で),\(f: X^{\hat{\sL}}\to X\)と定義すればいい.実数を扱うなら,\(\sR\subset X\)である.
これらのような関数の定義は集合論の範囲で確定できる.なぜなら,添字集合\(L\subset \hat{\sL}\)が与えられ,列\(y\in X^K\)が与えられたとき,\(y\in X^L\)となることは\(K = L\)の場合にまたそのときに限るからである.
列の長さを常に固定とすれば,ここで考えたようなことは必要ない.しかし,AI分野ではデータセットというものを扱う必要がある.データセットには様々な長さの列が存在する.それら列を統一的に記載するにはここで提案した記法は役に立つだろう.面倒くさいからって論文に書くときだけ列を集合とする危険な扱いを避けることができる.我々にはデータセットに使われる数式の集合論で言うところの「集合」は,列を用いて実装しなければならない,という掟がある.集合なのにpythonの「set」を使ってはならないという掟だ。このような慣習は良くない.どこまでがその慣習の範囲なのか,不明確だからだ.