論文まとめ：Spatial Implicit Neural Representations for Global-Scale Species Mapping

# 0. はじめに
ICML2023より以下の論文のまとめ
[1] E. Cole, et. al. "Spatial Implicit Neural Representations for Global-Scale Species Mapping"

- arXiv:
https://arxiv.org/abs/2306.02564

- github:
https://github.com/elijahcole/sinr
MIT License

以下に注目してまとめる
1. 論文の概要は何か
1. モデルのアーキテクチャはどのようなものか
1. 「存在」のみのデータの場合にどのように対処するのか

# 1. 概要
- 生態学関連の論文であり、種がどのような分布をしているかを予測するモデルに関するもの
- モデルとして著者らはSINRs（Spatial Implicit Neural Representa-tions）を提案した。これはネットワーク内部に各地点における各種の出現マップを表すようなfieldをもつ
- ほとんどの学習データは「存在する」データしかないため、lossを工夫した
- さらに今後の同分野の指標となりうるベンチマークも複数提案した

超ざっくりいうと、いかのようなmapを出力する。（[1]Fig3より）
![スクリーンショット 2024-02-19 12.49.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116706/309bd2cb-d2b0-3e8b-c035-8001c36eb449.png)

# 2. モデル
## 2.0 モデルの全体像

![スクリーンショット 2024-02-19 8.48.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116706/dc035570-8964-b873-66aa-0f206ce5b3e6.png)
このように左側学習データは一般的には離散的なもの。これを用いてその右のencoderとclassifierを学習させ、ある地点の各種における存在確率を出す。それを右のようなタスクで評価する。

詳細は後述。

## 2.1 変数の定義
${\bf x} = [longitude, latitude]$ ：地球上の位置

```math
{\bf y}({\bf x}) \in \{ 0, 1 \}^S
```
：位置 ${\bf x}$ においてS個の異なる種が存在するか否かを表すindicator

```math
{\bf z}({\bf x}) \in \{ 0, 1, \varnothing \}^S
```

：位置 ${\bf x}$ においてS個の異なる種が存在するか否か、それとも不明 $\varnothing $ かを表す

観測データ N 個は 位置とその位置における存在の有無なので
```math
\{ {\bf x}_i, {\bf z}_i({\bf x}_i) \}_{i=1}^N
```
となる。

## 2.2 モデルの定式化
任意の位置 ${\bf x}$ のうち対象となる位置の集合を $\chi$ とする。

encoderで $f\_{\theta} : \chi \to \mathbb{R}^k$ と特徴量化し、classifierで $h\_{\phi} : \mathbb{R}^k \to [0, 1]^S$ で分類すると考えるとモデルは

```math
\hat{y} = h_{\phi} (f_\theta (x)) 
```
となだろう。 $\hat{y}$ は推定値。またclassifier $h\_{\phi}$はS種に対して推定するのでmulti-label。

## 2.3 学習
適当なloss $\mathcal{L}$ （後述）を設定し、観測値と予測値とのlossが最小化するようなモデルのパラメータ $\theta, \phi$ を求める。

```math
\newcommand{\argmin}{\mathop{\rm arg~min}\limits}
\theta^*, \phi^* = \argmin_{\theta, \phi} \frac{1}{N} \sum_{i=1}^N \mathcal{L} (\hat{\bf y}_i, {\bf z}_i)
```

## 2.4 緯度軽度のsinusodial encoding

東経135度などの値はsinusodial encodingで $lon, lat \in [-1, 1]$ となるように変換する。sinusoidal encodingはNerfやtransformerで出てくるアレ。

```math
{\bf x} = [\sin(\pi lon), \cos(\pi lon), \sin(\pi lat), \cos(\pi lat))
```



# 3. loss
loss を考える際に重要なのが、「正解しかないデータをどう取り扱うか」である。つまり「ある種がある地点に存在する」というデータはあるが、「ある種がある地点には存在しない」というデータはほとんどない。

これに関して以下の３種類を提案している。（experimentでそれぞれのlossを評価している）


## 3.1 SSDL loss
１つの対応策として「任意の種は世界で一部の地域にしかいない」という前提に立ち、適当にランダムに選択した位置に対して「存在しない」ラベルを割り当てる方法がある。

これを “Assume negative” loss (same species, different location)：$\mathcal{L}\_{\rm AN-SSDL}$ という。

```math
\mathcal{L}_{\rm AN-SSDL} (\hat{\bf y}, {\bf z}) = - \frac{1}{n_{pos}} \sum_{j=1}^S \mathbb{1}_{z_j = 1} [\log (\hat{y}_j) + log(1-\hat{y}_j')]
```

$\hat{y}\_j'$ は $\hat{y}\_j' = h\_{\phi}(f\_{\theta}( {\bf r} )) \ {\rm with} \ {\bf r} \sim {\rm Uniform}(\chi)$ と一様乱数からサンプリングした適当な位置に対する推論結果であり、これを0に収束させるべく1から引いたlossとしている。

## 3.2 SLDS loss
今回のモデルSINRsは位置を入力して全ての種に対する確率が出てくるので、その位置で観測されている（存在している）種以外の種に対するラベルが必要となる。しかしほとんどの種のラベルはないだろうから、無い種に関しては、マスクをかけて学習対象から外すか、あるいは先と同様、存在しないことの方が圧倒的に多いという前提のもとに確率０に収束させるかである。ここでは後者を採用している。

これを“Assume negative” loss (same location, different species)：$\mathcal{L}_{\rm AN-SLDS}$ と読んでいる。

つまり

```math
\mathcal{L}_{\rm AN-SLDS} (\hat{\bf y}, {\bf z}) = - \frac{1}{n_{pos}} \sum_{j=1}^S \mathbb{1}_{z_j = 1} [\log (\hat{y}_j) + log(1-\hat{y}_{j'})]
```
である。もちろん $j' \sim {\rm Uniform} (j : z_j \neq 1)$ である。

## 3.3 full loss
これら２つを組み合わせる。

```math
\mathcal{L}_{\rm AN-full} (\hat{\bf y}, {\bf z}) = - \frac{1}{S} \sum_{j=1}^S [\mathbb{1}_{[z_j = 1]} \lambda +  \log (\hat{y}_j) + \mathbb{1}_{[z_j \neq 1]} \log (1-\hat{y}_j) + \log (1-\hat{y}_j')]
```

# 4. モデルにおけるネットワークのアーキテクチャ
encoder $f\_{\theta}$ に関しては以下のようなネットワーク・アーキテクチャとなっている。

![スクリーンショット 2024-02-19 8.41.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116706/429cd763-f37b-1382-6b26-03851b25ecd7.png)

基本は全結合＋Reluの繰り返し。最初のFC - Reluの後はresidualなblockとしている。<font color="red">batch normなど正規化層がない点が気になる。</font>

# 5. 使用したデータセット
 iNaturalist (iNa)というdataset。
 https://paperswithcode.com/dataset/inaturalist

  3550 万地点における 47,375 種のデータ。

# 6. 評価手法
以下4つのタスクで評価した。

## 6.1 S&T: eBird Status and Trends
ある特定の地域における特定種に関する詳細データセットで評価しようという試みのうつの１つ。

北米を中心とした535種の鳥類を対象としたデータセット。

## 6.2 IUCN: Expert Range Maps
こちらもある特定の地域における特定種に関する詳細データセットで評価しようという試みのうつの１つで、国際自然保護連合のレッドリストに記載されている生息域マップ

## 6.3 Geo Prior: Geographical Priors for Image Classification
このモデルと画像分類モデルとを組み合わせて、その精度で評価する？

## 6.4 Geo Feature: Environmental Representation Learning
このモデルを各地点標高推定などの回帰問題に転移学習させ、その精度で評価する。


# 7. 結果
４つの評価手法による各lossの精度は以下。上から２区分目でZhouらやMacらのモデルとも比較している。

![スクリーンショット 2024-02-19 8.50.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/116706/8b60dee2-2148-4adb-5645-5b2704a07da6.png)

lossをfullとし、入力として環境変数を入れれば精度が最もよくなるようだ。

注目すべきはclass数が増えると精度が上がる傾向にある点だ。class間（つまり種間）の関連性も学習されているということか？例えば種Aがいれば、それを捕食する種Bもいるなど。

# 8. 感想
<font color="red">
Neural Netのパラメータ空間上で任意の位置に対する値を持っている点はNerfなどに似ている気がする。

環境に関する説明変数を入れなくても分布だけで精度が良い点は興味深い。関連する２種があれば、それらの分布から補完し合っているということだろうか。

一方で、メッシュが細かいと内部表現が膨大となり学習が困難となるのではないか。そうすると、より狭い空間において数種の生物（例えば日本におけるスズメ・カラスなど数種）に対してより細かいメッシュ（例えば100m x 100m）でモデルを考えた場合、このような仕組みが妥当かどうかは不明
</font>