활성화 함수 7

[머신러닝 - 이론, Python] 활성화 함수 - 소프트맥스 함수 구현 (Activation Function - Softmax Function Implementation)

머신러닝에서 출력은 분류(Classfication)와 회귀(Regression)가 있습니다. 분류는 해당 데이터가 어느 클래스에 속하느냐의 문제이고, 회귀는 해당 데이터의 연속적인 수치를 예측하는 문제입니다. 회귀의 경우 항등 함수를 이용해서 입력 신호를 그대로 출력해도 되지만, 분류의 경우에는 보통 소프트맥스 함수를 사용합니다. 소프트맥스 함수는 다음과 같습니다. \(y_k = \frac{exp(a_k)}{\sum_{i = 1}^{a} exp(a_i)}\) 따라서 분모는 모든 입력 신호를 exp()해서 더한 값이고, 분자는 원하는 k의 입력신호 a_k의 지수 함수가 됩니다. 따라서 코드로 구현하면 다음과 같습니다. import numpy as np def softmax(a): exp_a = np.exp..

[머신러닝 - Python] 활성화 함수 - 렐루 함수 구현 (Activation Function - ReLU Function Implementation)

최근에 많이 사용하고 있는 활성화 함수의 비선형 함수로는 ReLU 함수가 있습니다. ReLU 함수는 0보다 작은 값에 대해서는 0을 출력하고, 0이 넘으면 그 값을 출력하는 함수입니다. 즉 식은 아래와 같습니다. \(h(x) = \left\{\begin{matrix} x & x > 0 \\ 0 & x \leq 0 \\ \end{matrix}\right.\) 간단하죠? 이를 코드로 구현해보겠습니다. import numpy as np import matplotlib.pyplot as plt def ReLU(x): return np.maximum(0, x) x = np.array([-1.0, 1.0, 2.0]) print(ReLU(x)) x = np.arange(-5.0, 5.0, 0.1) y = ReLU(x..

[머신러닝 - 이론] 활성화 함수에서 비선형 함수를 사용해야 하는 이유 (Why We Use nonlinearlly function in Activation Function)

신경망에서 활성화 함수는 비선형 함수를 사용해야 합니다. 앞에서 본 계단 함수나 시그모이드 함수 모두 비선형 함수입니다. 그렇다면 선형함수는 무엇일까요? 선형함수는 y = ax + b와 같이 x 값의 배수를 출력하는 함수를 말합니다. 즉 1개의 곧은 직선이 됩니다. 왜 선형 함수는 사용하면 안 될까요? 바로 은닉층을 깊게하는 의미가 없어지기 때문입니다. 예를 들어 활성화 함수 h(x) = cx라고 가정해봅시다. 이때 3층 네트워크라고 가정하면 y = h(h(h(x)))가 되고, 이는 c^3 x와 같습니다. 근데 a = c^3이라고 한다면? 그냥 y = ax와 다를게 없습니다. 즉, 층을 깊게하는 의미가 없어지는 겁니다. 따라서 우리는 활성화 함수를 필연적으로 비선형 함수를 이용해야합니다. 그래야 층을 쌓..

[머신러닝 - Python] 활성화 함수 - 시그모이드 함수 구현 (Activation Function - Sigmoid Function Implemetation)

앞의 글을 읽으시면 이해에 도움이 됩니다. 2022.10.18 - [Computer Science/머신러닝] - [머신러닝 - 이론] Logistic Regression (로지스틱 회귀) [머신러닝 - 이론] Logistic Regression (로지스틱 회귀) 앞의 글을 읽으시면 이해에 도움이 됩니다. 2022.05.07 - [Computer Science/머신러닝] - [머신러닝 - Python] 활성화 함수 - 시그모이드 함수 구현 (Activation Function - Sigmoid Function Implemetation) [머신러닝 - Python] hi-guten-tag.tistory.com 퍼셉트론은 계단 함수를 사용하지만, 이는 활성화 함수의 일부일 뿐이다. 실제로 제대로 된 신경망을 ..

[머신러닝 - Python] 활성화 함수 - 계단 함수 구현 (Activation Function - Step Function Implementation)

계단 함수는 0이하의 값에 대해 0을 출력하고, 0초과의 값에 대해서는 1을 출력한다. numpy 배열에 대해서 각각 계산을 할 수 있게 만들면 코드는 아래와 같다. import numpy as np import matplotlib.pyplot as plt def step(x): return np.array(x > 0, dtype=np.int64) x = np.arange(-5.0, 5.0, 0.1) y = step(x) plt.plot(x, y) plt.ylim(-0.1, 1.1) plt.show() 실제로 -5.0 부터 5.0까지 0.1 간격으로 벡터를 만들어서 넣었는데, 이런 형태의 함수가 나오게 된다. 참고로 x > 0만 하면 True, False 값으로 나오는데 이를 dtype = np.int6..

[머신러닝 - 이론] 지금까지의 내용 정리

지금까지 내용을 간략히 정리하고 가겠습니다. 인공지능 : 인간의 지능이 가지는 학습, 추리, 논증 따위의 기능을 갖춘 시스템 인공지능은 강한 인공지능과 약한 인공지능으로 나뉜다 인공지능의 접근 방법 과학적 : 인간의 지능을 충분히 연구한다음 그 원리를 충실히 모방하는 기계 제작 공학적 : 쓸만한 지능 기계를 만들 수 있다면 인간의 지능 원리를 따르지 않아도 됨 규칙 기반 방법론 : 사람이 사용하는 규칙을 수집하여 프로그래밍(if-else) 하지만 규칙을 위반하는 샘플이 발생함 기계 학습 방법론 : 충분한 데이터를 수집 -> 기계가 스스로 규칙을 찾아내 학습하는 방법 딥러닝 방법론 : 기계 학습은 특징까지 수작업으로 알아내야하지만, 딥러닝은 특징마저 스스로 알아냄 머신러닝의 데이터의 중요성 데이터가 없으면..

[머신러닝 - 이론] 딥러닝의 학습 전략 (Learning Strategy of Deep Learning)

앞선 글에서는 딥러닝이 무엇인지, 손실 함수는 어떻게 정의되고, 가중치 갱신 규칙에 대해 간략하게 알아봤습니다. 딥러닝의 학습 알고리즘은 수학적으로 아주 깔끔합니다. 하지만 층이 깊어질수록 딥러닝의 학습 중 발생하는 현실적인 문제를 말하고, 해결 전략에 대해 설명해드리겠습니다. 그리고 뒤에서는 몇몇 중요한 손실 함수와 옵티마이저 함수의 종류에 대해서 설명하겠습니다. 마지막으로 하이퍼 파라미터의 최적화 방법에 대해 알려드리겠습니다. 대표적인 두가지 문제는 그레이디언트 소멸 문제(Vanishing Gradient Problem), 과잉 적합 문제(Over Fitting Problem)입니다. 1. 그레이디언트 소멸 문제 (Vanishing Gradient Problem) 가중치를 갱신하는 과정은 미분의 연쇄..