AIを深く知りたい人のための数学 第6回 総和
皆さん、こんにちは。LP開発グループのn-ozawanです。
11月に入り寒くなってきましたね。日本の一部の動物園では温泉に入るカピバラを観察することができます。気持ちよさそうに温泉に入るカピバラは可愛いですよ。
本題です。
数式の記号は多くありますが、数学が苦手な人が数式を見て「うわっ」と思ってしまう記号一位は総和のΣだと個人的には思っています。理由は公式などでよく見かける上、Σの上下に数式が意味深にあるためです。しかしそんな総和ですが、私たちプログラマには馴染みのある概念だったりします。今日はそんな総和を思い出します。
※「AIを深く知りたい人のための数学」は、数学を忘れてしまったエンジニアを対象に、中学数学から思い出すことを目的としたシリーズです。
目次
総和
総和(Σ)って何だっけ?
総和とは、2つ以上の数式や数を足し合わせた合計のことです。例えば1から10までの数字を足し合わせた合計は10です。これを総和と言います。式で表現すると以下の通りですが、冗長で書くの面倒ですので、Σという記号で表現します。

Σの下は初期値を表しており、上は繰り返しの回数を表しています。つまりは、i を1から10まで変化させながら、その全てを足し合わせる、という意味になります。

Σとfor文
ここまで総和の話を聞いたプログラマの方々は、「あれ?これってfor文に似てるな」と思いませんでしたか?それもそのはずで、私たちプログラマはfor文で総和の処理を書くことがあります。例えば先ほどのは、以下と同じです。
let sum = 0;
for (let i = 1; i <= 10; i++) {
sum += i;
}
console.log(sum);こうして見ると何となくΣに親近感を覚えませんか?
話は逸れますが、多くの言語ではfor文を書かずに配列を処理できるメソッドが用意されています。例えばTypeScriptで先ほどの処理をしようとすると以下のように書けます。
var array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
console.log(array.reduce((acc, cur) => acc + cur, 0));コードが簡潔に書けるのが魅力的ではありますが、中ではfor文を回していることに変わりなく、配列の要素数が増えれば増えるほどマシンのリソースを圧迫します。知らない内に性能が低下するので、実装する際は気を付けたいところです。
総和と機械学習
昨今の機械学習の多くは統計学から来ているため、平均・分散、標準偏差などの統計量が登場します。平均・分散・標準偏差は、すべて「データ全体を見渡して、どれだけばらつきがあるか」を測る指標であり、総和はその「全体を見る」ための基本的な操作になります。nはデータの数です。

また、ニューラルネットワークの線形変換においても総和が使われます。各ニューロンが複数の入力を受け取り、それぞれに重みをかけて合計する処理は、まさに総和です。nはインプットとなるニューロンの数です。

このように、AIや機械学習を学ぶと、必ずと言っていいほど総和が出てきますので、今のうちに慣れましょう。
おわりに
総和(Σ)はいたるところで登場しますが、ただのfor文を使って合計を求めたいのだと思えばたいして難しくはありません。
ではまた。
