This notebook contains descriptions of several activation functions.

Necessary packages

require(ggplot2)
Loading required package: ggplot2

1 Identity Function

f <- function(x) {x}
ggplot(data.frame(x=c(-4, 4)), mapping=aes(x=x)) + 
  geom_hline(yintercept=0, color='red') +
  geom_vline(xintercept=0, color='red') +
  stat_function(fun=f, colour = "dodgerblue3") +
  ggtitle('Identity') +
  scale_x_continuous(name='x') +
  scale_y_continuous(name='f(x)') +
  theme(plot.title = element_text(hjust = 0.5))

Let’s create a reusable function for plotting the activation functions going forward:

plot_activation_function <- function(f, title, range){
  ggplot(data.frame(x=range), mapping=aes(x=x)) + 
    geom_hline(yintercept=0, color='red', alpha=1/4) +
    geom_vline(xintercept=0, color='red', alpha=1/4) +
    stat_function(fun=f, colour = "dodgerblue3") +
    ggtitle(title) +
    scale_x_continuous(name='x') +
    scale_y_continuous(name='f(x)') +
    theme(plot.title = element_text(hjust = 0.5))
}

2 Binary Step Function

f <- function(x){
  ifelse(x >= 0, 1, 0)
}
plot_activation_function(f, 'Binary step', c(-4,4))

3 Logistic Function

f <- function(x){1 / (1 + exp(-x))}
plot_activation_function(f, 'Logistic', c(-4,4))

4 Tan H Function

tanh_func <- function(x){tanh(x)}
plot_activation_function(tanh_func, 'TanH', c(-4,4))

5 Arc Tan Function

arc_tan_func <- function(x){atan(x)}
plot_activation_function(arc_tan_func, 'ArcTan', c(-4,4))

6 Soft Sign Function

soft_sign_func <- function(x){ x / (1 + abs(x))  }
plot_activation_function(soft_sign_func, 'Softsign', c(-4,4))

7 Rectified Linear Unit Function

rec_lu_func <- function(x){ ifelse(x < 0 , 0, x )}
plot_activation_function(rec_lu_func, 'RecLU', c(-4,4))

8 Leaky Rectified Linear Unit Function

leaky_rec_lu_func <- function(x){ ifelse(x < 0 , 0.01 *x , x )}
plot_activation_function(leaky_rec_lu_func, 'Leaky RecLU', c(-8,8))

9 Soft Plus Function

soft_plus_func <- function(x){ log(1 + exp(x))}
plot_activation_function(soft_plus_func, 'SoftPlus', c(-8,8))

10 Bent Identity Function

bent_identity_func <- function(x){  (sqrt(x^2 + 1) - 1)/2 + x  }
plot_activation_function(bent_identity_func, 'Bent Identity', c(-8,8))

11 Sinusoid Function

plot_activation_function(sin, 'sin(x)', c(-8,8))

12 Sinc Function

sinc_function<- function(x){ifelse(x == 0, 1, sin(x) / x)}
plot_activation_function(sinc_function, 'Sinc', c(-8,8))

13 Gaussian Function

gaussian_function<- function(x){exp(-x^2)}
plot_activation_function(gaussian_function, 'Gaussian', c(-4,4))

LS0tDQp0aXRsZTogIkFjdGl2YXRpb24gRnVuY3Rpb25zIg0KYXV0aG9yOiAiU2hhaWxlc2ggS3VtYXIiDQpvdXRwdXQ6IA0KICBodG1sX25vdGVib29rOg0KICAgIHRvYzogdHJ1ZQ0KICAgIG51bWJlcl9zZWN0aW9uczogdHJ1ZQ0KLS0tDQoNClRoaXMgbm90ZWJvb2sgY29udGFpbnMgZGVzY3JpcHRpb25zIG9mIHNldmVyYWwgYWN0aXZhdGlvbiBmdW5jdGlvbnMuDQoNCg0KTmVjZXNzYXJ5IHBhY2thZ2VzDQpgYGB7cn0NCnJlcXVpcmUoZ2dwbG90MikNCmBgYA0KDQojIElkZW50aXR5IEZ1bmN0aW9uDQoNCmBgYHtyfQ0KZiA8LSBmdW5jdGlvbih4KSB7eH0NCmdncGxvdChkYXRhLmZyYW1lKHg9YygtNCwgNCkpLCBtYXBwaW5nPWFlcyh4PXgpKSArIA0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQ9MCwgY29sb3I9J3JlZCcpICsNCiAgZ2VvbV92bGluZSh4aW50ZXJjZXB0PTAsIGNvbG9yPSdyZWQnKSArDQogIHN0YXRfZnVuY3Rpb24oZnVuPWYsIGNvbG91ciA9ICJkb2RnZXJibHVlMyIpICsNCiAgZ2d0aXRsZSgnSWRlbnRpdHknKSArDQogIHNjYWxlX3hfY29udGludW91cyhuYW1lPSd4JykgKw0KICBzY2FsZV95X2NvbnRpbnVvdXMobmFtZT0nZih4KScpICsNCiAgdGhlbWUocGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSkpDQoNCmBgYA0KDQpMZXQncyBjcmVhdGUgYSByZXVzYWJsZSBmdW5jdGlvbiBmb3IgcGxvdHRpbmcgdGhlIGFjdGl2YXRpb24gZnVuY3Rpb25zIGdvaW5nDQpmb3J3YXJkOg0KYGBge3J9DQpwbG90X2FjdGl2YXRpb25fZnVuY3Rpb24gPC0gZnVuY3Rpb24oZiwgdGl0bGUsIHJhbmdlKXsNCiAgc3RhcnQgPC0gcmFuZ2VbMV0NCiAgZW5kIDwtIHJhbmdlWzJdDQogIGdncGxvdChkYXRhLmZyYW1lKHg9cmFuZ2UpLCBtYXBwaW5nPWFlcyh4PXgpKSArIA0KICAgIGdlb21faGxpbmUoeWludGVyY2VwdD0wLCBjb2xvcj0ncmVkJywgYWxwaGE9MS80KSArDQogICAgZ2VvbV92bGluZSh4aW50ZXJjZXB0PTAsIGNvbG9yPSdyZWQnLCBhbHBoYT0xLzQpICsNCiAgICBzdGF0X2Z1bmN0aW9uKGZ1bj1mLCBjb2xvdXIgPSAiZG9kZ2VyYmx1ZTMiKSArDQogICAgZ2d0aXRsZSh0aXRsZSkgKw0KICAgIHNjYWxlX3hfY29udGludW91cyhuYW1lPSd4JykgKw0KICAgIHNjYWxlX3lfY29udGludW91cyhuYW1lPSdmKHgpJykgKw0KICAgIHRoZW1lKHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUpKQ0KfQ0KYGBgDQoNCiMgQmluYXJ5IFN0ZXAgRnVuY3Rpb24NCmBgYHtyfQ0KZiA8LSBmdW5jdGlvbih4KXsNCiAgaWZlbHNlKHggPj0gMCwgMSwgMCkNCn0NCnBsb3RfYWN0aXZhdGlvbl9mdW5jdGlvbihmLCAnQmluYXJ5IHN0ZXAnLCBjKC00LDQpKQ0KYGBgDQoNCg0KIyBMb2dpc3RpYyBGdW5jdGlvbg0KYGBge3J9DQpmIDwtIGZ1bmN0aW9uKHgpezEgLyAoMSArIGV4cCgteCkpfQ0KcGxvdF9hY3RpdmF0aW9uX2Z1bmN0aW9uKGYsICdMb2dpc3RpYycsIGMoLTQsNCkpDQpgYGANCg0KIyBUYW4gSCBGdW5jdGlvbg0KDQpgYGB7cn0NCnRhbmhfZnVuYyA8LSBmdW5jdGlvbih4KXt0YW5oKHgpfQ0KcGxvdF9hY3RpdmF0aW9uX2Z1bmN0aW9uKHRhbmhfZnVuYywgJ1RhbkgnLCBjKC00LDQpKQ0KYGBgDQoNCiMgQXJjIFRhbiBGdW5jdGlvbg0KDQpgYGB7cn0NCmFyY190YW5fZnVuYyA8LSBmdW5jdGlvbih4KXthdGFuKHgpfQ0KcGxvdF9hY3RpdmF0aW9uX2Z1bmN0aW9uKGFyY190YW5fZnVuYywgJ0FyY1RhbicsIGMoLTQsNCkpDQpgYGANCg0KIyBTb2Z0IFNpZ24gRnVuY3Rpb24NCmBgYHtyfQ0Kc29mdF9zaWduX2Z1bmMgPC0gZnVuY3Rpb24oeCl7IHggLyAoMSArIGFicyh4KSkgIH0NCnBsb3RfYWN0aXZhdGlvbl9mdW5jdGlvbihzb2Z0X3NpZ25fZnVuYywgJ1NvZnRzaWduJywgYygtNCw0KSkNCmBgYA0KDQoNCiMgUmVjdGlmaWVkIExpbmVhciBVbml0IEZ1bmN0aW9uDQpgYGB7cn0NCnJlY19sdV9mdW5jIDwtIGZ1bmN0aW9uKHgpeyBpZmVsc2UoeCA8IDAgLCAwLCB4ICl9DQpwbG90X2FjdGl2YXRpb25fZnVuY3Rpb24ocmVjX2x1X2Z1bmMsICdSZWNMVScsIGMoLTQsNCkpDQpgYGANCg0KIyBMZWFreSBSZWN0aWZpZWQgTGluZWFyIFVuaXQgRnVuY3Rpb24NCmBgYHtyfQ0KbGVha3lfcmVjX2x1X2Z1bmMgPC0gZnVuY3Rpb24oeCl7IGlmZWxzZSh4IDwgMCAsIDAuMDEgKnggLCB4ICl9DQpwbG90X2FjdGl2YXRpb25fZnVuY3Rpb24obGVha3lfcmVjX2x1X2Z1bmMsICdMZWFreSBSZWNMVScsIGMoLTgsOCkpDQpgYGANCg0KIyBTb2Z0IFBsdXMgRnVuY3Rpb24NCmBgYHtyfQ0Kc29mdF9wbHVzX2Z1bmMgPC0gZnVuY3Rpb24oeCl7IGxvZygxICsgZXhwKHgpKX0NCnBsb3RfYWN0aXZhdGlvbl9mdW5jdGlvbihzb2Z0X3BsdXNfZnVuYywgJ1NvZnRQbHVzJywgYygtOCw4KSkNCmBgYA0KDQojIEJlbnQgSWRlbnRpdHkgRnVuY3Rpb24NCmBgYHtyfQ0KYmVudF9pZGVudGl0eV9mdW5jIDwtIGZ1bmN0aW9uKHgpeyAgKHNxcnQoeF4yICsgMSkgLSAxKS8yICsgeCAgfQ0KcGxvdF9hY3RpdmF0aW9uX2Z1bmN0aW9uKGJlbnRfaWRlbnRpdHlfZnVuYywgJ0JlbnQgSWRlbnRpdHknLCBjKC04LDgpKQ0KYGBgDQoNCiMgU2ludXNvaWQgRnVuY3Rpb24NCmBgYHtyfQ0KcGxvdF9hY3RpdmF0aW9uX2Z1bmN0aW9uKHNpbiwgJ3Npbih4KScsIGMoLTgsOCkpDQpgYGANCg0KIyBTaW5jIEZ1bmN0aW9uDQpgYGB7cn0NCnNpbmNfZnVuY3Rpb248LSBmdW5jdGlvbih4KXtpZmVsc2UoeCA9PSAwLCAxLCBzaW4oeCkgLyB4KX0NCnBsb3RfYWN0aXZhdGlvbl9mdW5jdGlvbihzaW5jX2Z1bmN0aW9uLCAnU2luYycsIGMoLTgsOCkpDQpgYGANCg0KDQojIEdhdXNzaWFuIEZ1bmN0aW9uDQpgYGB7cn0NCmdhdXNzaWFuX2Z1bmN0aW9uPC0gZnVuY3Rpb24oeCl7ZXhwKC14XjIpfQ0KcGxvdF9hY3RpdmF0aW9uX2Z1bmN0aW9uKGdhdXNzaWFuX2Z1bmN0aW9uLCAnR2F1c3NpYW4nLCBjKC00LDQpKQ0KYGBgDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQo=