<jupyter_start><jupyter_text>Activation Function(활성화 함수): 입력신호의 총합을 출력신호로 변환하는 함수 : 크게 아래 **두 단계**에 걸쳐 처리된다.$$a = b + w_1*x_1 + w_2*x_2 \text{ : 총합을 내는 단계}$$$$y = h(a) \text{ : 활성화함수 h()에 입력해 결과를 내는 단계}$$  1. Step Function: 활성화함수처럼 임계값을 경계로 출력이 바뀌는 함수를 Step Function이라 한다.<jupyter_code># 계단함수 구현
# numpy 트릭을 사용한다.
def step_function(x):
    y = x > 0
    return y.astype(np.int)
# example
x = np.array([-1.0, 1.0, 2.0])
y = x > 0
print(y)
y = y.astype(np.int)
print(y)
# step funtion 시각화
# step function을 한줄로 만들어보자
def step_function(x):
    return np.array(x > 0, dtype=np.int)

x = np.arange(-5.0, 5.0, 0.1)
y = step_function(x)
plt.plot(x,y)
plt.ylim(-0.1, 1.1) # y축 범위 지정
plt.show()<jupyter_output><empty_output><jupyter_text>**계단 형식으로 나타나기 때문에 step function이라 한다.**  2. Sigmoid Function$$sigmoid : h(x) = {1 \over {1+exp(-x)}}$$<jupyter_code># sigmoid 구현
def sigmoid(x):
    return 1 / (1+np.exp(-x))

# example
x = np.array([-1.0, 1.0, 2.0])
sigmoid(x)
# sigmoid 시각화
x = np.arange(-5.0, 5.0, 0.1)
y = sigmoid(x)
plt.plot(x,y)
plt.ylim(-0.1, 1.1) # y축 범위 지정
plt.show()<jupyter_output><empty_output><jupyter_text>2-1. Step function vs Sigmoid function? 차이점 : 매끄러움: step function은 0을 기준으로 출력이 확 뛰는데 반해, sigmoid function은 **입력에 따라 출력이 매끄럽게 변화한다.** : **이로 인해, step function은 0 또는 1의 출력을 갖는 반면, sigmoid function은 0~1사이의 실수를 갖는다** : **퍼셉트론에서는 뉴런/노드사이에 0 또는 1이 흘렀다면, 신경망에서는 연속적인 실수가 흐른다는 차이를 갖는다.** 공통점 : 입력이 작을수록 0에 가까운 출력을 내고, 입력이 커질수록 1에 가까운 출력을 낸다. : 둘 다 비선형함수!  2-2. 신경망에서는 활성화함수로 비선형함수를 사용한다?: 선형함수를 사용하면 층(Layer)이 깊어지는 의미가 없어진다. : 선형함수를 사용하면 3개층을 거치면 $y(x) = h(h(h(x)))$이 되는데, $h(x) = ax$일 때, 이 값은 $y(x) = a^3x$가 된다. : 은닉층(hidden layer)을 거친 의미가 없다는...  5. ReLU(Rectified Linear Unit): 입력이 0을 넘으면 그대로 입력값을 출력, 0이하라면 0을 출력하는 함수$$ReLU : f(n)=\begin{cases}x, & \mbox{if }x\mbox{ > 0} \\0, & \mbox{if }x\mbox{ <= 0}\end{cases}$$<jupyter_code># ReLU 구현
# np.maximum은 두 입력중 큰 값을 반환하는 함수
def relu(x):
    return np.maximum(0,x)

# 시각화
x = np.arange(-5.0, 5.0, 0.1)
y = relu(x)
plt.plot(x,y)
plt.ylim(-0.1, 5.1) # y축 범위 지정
plt.show()<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.17938745746232376, 'fraction_numerical': 0.037919299951385516, 'mean_word_length': 3.6772727272727272, 'pattern_counts': {'":': 0, '<': 14, '<?xml version=': 0, '>': 17, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '3', 'dir': 'jupyter-structured-clean-dedup', 'id': '77133', 'license': 'MIT', 'n_tokens_mistral': 1410, 'n_tokens_neox': 1612, 'n_words': 277, 'path': 'DeepLearning_from_the_bottom/2.Activation_Function.ipynb', 'repo_name': 'Junhojuno/DeepLearning-Beginning', 'size': '2057'}