gooブログはじめました!

写真付きで日記や趣味を書くならgooブログ

連光寺・若葉台里山保全地域を訪ねる

2017-11-26 08:22:31 | ブログ
 私は、都内杉並区の住民であり、区内の済美山という丘陵地を里山のように思っているが、それは勝手に思っているだけであって、里山として保全地域に指定されているわけではないだろう。

 どこか本物の里山を歩いてみたいと思っていたところ、東京都が「連光寺・若葉台里山保全地域」を選定したことを知り、早速行ってみることにした。

 細長い里山緑地の縁や尾根につけられた山道をたどって歩くと、希少な陸産貝類などを柵内に保全する谷戸の側を通って北側の道路に出た。

 谷戸とは、多摩の丘陵地帯にみられる谷間の地形であり、沼または湿地になっている場所もあるようだ。

 保全されている湿地には、絶滅危惧種に選定されているミズコハクガイとキバサナギガイが生息しているという。

 これらの貝類は、かつて本州、四国、九州の池や沼に広く生息していたものの、池沼の開発によって生存する場所を断たれ、今では、多摩の谷戸など経済的価値のない沼や湿地にわずかに生き残っているとみる。

 この里山の近くには、桜ケ丘公園、貝取北公園、一本杉公園などウォーキングに適した場所が多く、何度か歩いている。このとき、「貝取」の地名の由来は何だろうかという疑問がわいていた。

 今回、里山の貝類を知ることになり、この際、ちょうどよい機会なので、この地名の由来を調べてみることにした。

 「東京都の地名」を収録した分厚い辞典によれば、「貝取村」は少なくとも江戸時代の初めには存在していた。しかし、地名の由来は説明していない。

 多摩市が所蔵する参考文献によれば、「貝取」について、「地名の由来は定かではないが、言い伝えには、往古貝の取れる所といわれている。貝の化石が多くあったようである。」と説明している。往古貝とは、貝の化石のことであろう。

 今の時代で「貝を取る」と言えば、主として、食料となる貝を採取することを意味するが、昔は、貝殻を原材料として利用するために、それを採取することも行われていたものと想像する。例えば、貝殻を焼いて胡粉を作り、それからできるおしろいなどは、かなりの需要があったはずである。

 この参考文献は、さらに「また、その昔、付近一帯が馬の放牧場(小野牧)に関係した地帯であることから、飼取の語から来たのではないかともいわれる(多摩の歴史7)。」と追記している。

 この地方では、古くから馬の放牧が行われていたようであり、万葉集にもその様子を詠んだ歌が残されている。

 「東京都の地名」によると、貝取村にはまぐさ場があり、これをめぐって近隣の村と争いがあったことが記録に残されている。その当時、まぐさ場がいかに重要な場所であったかを示唆している。

 まぐさ場とは、まぐさ(馬草)を刈り取るところを意味する。まぐさは、馬の餌であり、かひば(かいば、飼い葉)とも言われる。そうすると、かいばを刈り取る作業をかいば取り、縮めて飼取、当て字に代えて貝取とよぶことも可能性としてはありと思える。しかし、この発想は後知恵のようにも思えるので、「飼取」の真偽のほどは分からない。

 結論として、参考文献の説明は妥当であり、それ以上に言うことはないと考える。

 参考文献
 「多摩市の町名」(多摩市役所所蔵)

人工知能の学習方法を検討する

2017-11-05 08:45:55 | ブログ
 現代の人工知能では、複数個の神経細胞(ニューロン)を階層的に接続したニューラルネットワークが用いられる。ニューラルネットワークは、入力層、一つまたは複数個の中間層、および出力層から構成される。モデル化された各ニューロンは、ユニットとも呼ばれる。

 入力層は、入力される学習データをそのまま出力するユニット群を備える。中間層の各ユニットは、複数の入力データの各々に重みwを掛けて入力データの全体について総和をとったものと、しきい値(バイアスbとも呼ばれる)との和を全体的な入力データzとし、この入力データzをある活性化関数a(z)に入力して得られる出力値y=a(z)を出力データとする。出力層の各ユニットは、中間層の各ユニットと同じ計算式の計算を行い、ネットワークが算出した結果を提示する。

 入力データと、中間層、出力層による出力データの値は、変数として扱われるが、各ユニットに固有の重みwとバイアスbとは、パラメータとして扱われる。一つのユニットにn個の入力があるとすれば、重みw=(w1,w2,...wn)もn個必要になる。すべての重みwおよびバイアスbは互いに独立であると考えるので、ニューラルネットワーク全体のパラメータの数は膨大なものとなる。

 このニューラルネットワークを用いた学習とは、入力層のユニット群へ一組の学習データを入力して中間層と出力層による上記の計算式による計算を行わせ、出力層に計算結果を得るというプロセスを多数組の学習データについて繰り返し、教師あり学習では、投入した学習データ全体について計算結果と正解との差分が最小となるようにパラメータ群を決定することである。

 結果データaと正解tとの誤差はa-tとなるので、この誤差を最小にする最小2乗法によれば、2乗誤差Cは、(1/2)(a-t)^2で与えられる。出力層が2つのユニットで構成されるとし、各々の結果出力a1,a2に対応する正解をt1,t2とすると、Cは次の式で表される。
   C=(1/2){(a1-t1)^2+(a2-t2)^2}

 このCは、変数a1,a2の関数であり、コスト関数、損失関数、目的関数などと呼ばれる。コスト関数Cは、入力されるk番目の学習データのコスト関数C[k]の総和と考えられる。N組の学習データがあるとすると、Cは
   C=C[1]+C[2]+...+C[k]+...+C[N]
となる。ここで、
   C[k]=(1/2){(a1[k]-t1[k])^2+(a2[k]-t2[k])^2}
である。a[k],t[k]は、k番目の学習データに関するa,tである。

 コスト関数Cが出力結果の活性化関数a1(z)とa2(z)を含むということは、出力層の重みとバイアスのすべてばかりでなく、中間層の重みとバイアスのすべてを含むことを意味する。従って、Cはネットワークに存在する重みとバイアスのすべてを含むから、C=f(w,b)のように表現できる多変数関数である。ここで、wはすべての重みを要素とするベクトル、bはすべてのバイアスを要素とするベクトルである。活性化関数a(z)が非線形関数であるため、コスト関数Cは非線形関数となる。

 こうなると、学習のポイントは、関数C=f(w,b)を最小にするようなパラメータ群(w,b)を求めることに帰着する。

 ニューラルネットワークの学習とは、そのコスト関数を最適化することであると分かった。その技法は、線形計画法に似ている。しかし、線形計画法の目的関数が線形関数であるのに対して、ニューラルネットワークのコスト関数は非線形関数である。一般に非線形関数の最適化には、以下に述べるような問題点が生じる。

 参考文献1は、このようなコスト関数Cの最小値を探すための技法について分かりやすく書かれている。さらに、訓練用の学習データを64組備え、Excelを用いて具体的なニューラルネットワークのコスト関数が最小になるようなパラメータ群(w,b)を計算する手法を提示している。

 参考文献1の例題は、簡単なニューラルネットワークの事例であり、コスト関数Cの値が0になるようにつくってある。これは、関数C=f(w,b)の最小値であることは言うまでもない。

 しかし、現実の多くのニューラルネットワークでは、コスト関数値が最小値だけではなく、より値の大きい極小値をもつようなケースが現れるという問題がある。

 多変数関数の最小値を探すための方法として勾配降下法という技法が知られている。これは、コスト関数の値が減る方向にパラメータ群(w,b)を少しずつ変えていき、コスト(誤差)が最低になるところに到達することを目指すものである。しかし、コスト関数の極小点に停留すると、ここから脱出することが不可能になる。

 参考文献1,2は、コスト関数あるいは損失関数がパラメータ群の値に依存しており、極小点や最小点をもつことを説明しているが、抽象的過ぎて、具体的にどのような条件の下で望ましくない極小点が発生するのか明らかでない。

 そこで、この点を明解にするために、できるだけ少数の学習データを用いて、少なくとも一つの極小点と最小点が生じるようなサンプルを構築できないものかと考える。

 参考文献1の例題は、コスト関数Cの最小値しかもたないのであるから、Cは2次関数的である。しかも例題の簡素なネットワーク構成でコスト関数が最小値0に達しているのであるから、学習データの数は充分であろう。そうすると、この例題の中間層のユニットの数を増やすか、中間層の層数を増やすことによって、この例題のコスト関数を3次関数的にし、1つの極小点と最小点をもつようにできないものかと考える。最小値0は保存されるものと期待する。

 この試みは宿題とし、検討を続ける。

 参考文献
 1.涌井良幸など著「ディープラーニングがわかる数学入門」(技術評論社)
 2.甘利俊一著「脳・心・人工知能」(ブルーバックス)