はい!今やってます!

Work Pertly, Live Idly

活性化関数、ReLUについて

活性化関数ReLU関数について

活性化関数、伝達関数と呼ばれる関数、中でも現代のニューラルネットワークでは最も一般的に利用されるReLUについて、 わかりやすく説明したい。

パーセプトロンニューラルネットワークの違い

一般的に言われる「単純パーセプトロン」は、単層のネットワークで、活性化関数にステップ関数(閾値を境に出力が切り替わる関数)を利用したモデルです。 一方で、多層でシグモイド関数などの滑らかな活性化関数を使用するネットワークを「多層パーセプトロン」と呼び、これがニューラルネットワークとなります。

パーセプトロンについて

パーセプトロンの誕生については1957年まで遡ります。視覚と脳の機能をモデル化し学習能力を持つものを言います。1960年代に爆発的なニューラルネットワークブームを巻き起こすも、1969年に線形分離可能なものしか学習できない事が指摘され下火となりました。

いくつかある活性化関数

ステップ関数

前述の通り、閾値を境に出力が変わる関数

シグモイド関数

こちらもニューラルネットワークでよく用いられる活性化関数のひとつ


\displaystyle h(X) = \frac{1}{1+exp(-x)}

exp(-x)は
\displaystyle {e}^{-x}
を意味する

シグモイド関数とステップ関数の違いは滑らかさであり、入力に対して、連続的に出力が変化するのが特徴です。 つまりステップ関数が0か1のどちらかの値しか返さないのに対して、シグモイド関数は実数を返す。0.***という感じで。 ただし、ステップ関数もシグモイド関数もいずれも、どんな値も0~1の間に押し込める点、非線形な関数であるという点は共通しています。

ReLU(ランプ)関数について

ReLU関数は非常にシンプルで、入力が0を超えていれば入力をそのまま出力し、0未満であれば0を返します。 現代のニューラルネットワークにおいては、一般的にReLU関数が活性化関数として使われています。

DockerのCentOSイメージを取得して、Railsアプリを動かすまで

新しいものを作りたくなったので、Docker上で動くRailsのプロジェクトを作成。 ハマり所としては、MariaDBを使いたかったのだが、mysql2がサポートしていなかった為使えなかった。

最新版のcentOSイメージを取得する(7.3)

docker pull centos:latest

dockerコンテナ起動

docker run --privileged -d -i -t --name=rails -v $HOME/work/workspace:/var/www -p 8080:80 centos:latest /sbin/init

mysqlをインストール(5.7)

yum remove mariadb-libs
rm -rf /var/lib/mysql/
yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
yum -y install mysql-community-server mysql-devel

mysqlをインストール(5.6) ※追記

yum remove mariadb-libs
rm -rf /var/lib/mysql/
yum localinstall http://dev.mysql.com/get/mysql57-community-release-el6-7.noarch.rpm
yum repolist all | grep mysql
yum -y install yum-utils
yum-config-manager --disable mysql57-community
yum-config-manager --enable mysql56-community
yum info mysql-community-server
yum -y install mysql-community-server
yum -y install mysql-devel
mysqld --version
systemctl enable mysqld
systemctl start mysqld

rubyをインストール(2.4.0)

yum remove ruby
yum install -y git
yum install -y libxslt-devel libxml++-devel libxml2-devel

git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
source ~/.bash_profile
git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
cd ~/.rbenv/plugins/ruby-build
./install.sh
rbenv -v
rbenv install -l
yum install -y bzip2 gcc openssl-devel readline-devel make
rbenv install 2.4.0
rbenv rehash
rbenv global 2.4.0
ruby -v

railsをインストール(5.1.1)

yum -y install gem
gem install rails

node&npmをインストール

yum install epel-release
yum install nodejs npm --enablerepo=epel

gccをインストール

yum install gcc gcc-c++

プロジェクト作成

rails new new_project -J -T -d mysql

その他

以下のようなものを参考にDocker Fileを作ってみてもいいかも http://qiita.com/togana/items/30b22fc39fe6f7a188ec

系にyumでMariaDBをインストールする

MariaDBのRepository Generatorへアクセス

https://downloads.mariadb.org/mariadb/repositories/#mirror=yamagata-university

yumリポジトリを追加

vi /etc/yum.repos.d/MariaDB.repo

設定ファイルを記述

# MariaDB 10.2 CentOS repository list - created 2017-06-02 14:39 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

yumMariaDB-server, MariaDB-clientをインストー

sudo yum install MariaDB-server MariaDB-client