活性化関数、ReLUについて
活性化関数ReLU関数について
活性化関数、伝達関数と呼ばれる関数、中でも現代のニューラルネットワークでは最も一般的に利用されるReLUについて、 わかりやすく説明したい。
パーセプトロンとニューラルネットワークの違い
一般的に言われる「単純パーセプトロン」は、単層のネットワークで、活性化関数にステップ関数(閾値を境に出力が切り替わる関数)を利用したモデルです。 一方で、多層でシグモイド関数などの滑らかな活性化関数を使用するネットワークを「多層パーセプトロン」と呼び、これがニューラルネットワークとなります。
パーセプトロンについて
パーセプトロンの誕生については1957年まで遡ります。視覚と脳の機能をモデル化し学習能力を持つものを言います。1960年代に爆発的なニューラルネットワークブームを巻き起こすも、1969年に線形分離可能なものしか学習できない事が指摘され下火となりました。
いくつかある活性化関数
ステップ関数
前述の通り、閾値を境に出力が変わる関数
シグモイド関数
こちらもニューラルネットワークでよく用いられる活性化関数のひとつ
exp(-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
yumでMariaDB-server, MariaDB-clientをインストール
sudo yum install MariaDB-server MariaDB-client