AI 모델(딥러닝 기초)/2. 신경망
-
2. 신경망(6)AI 모델(딥러닝 기초)/2. 신경망 2023. 1. 5. 14:00
※ Batch 처리 - 입력 데이터를 하나로 묶어 처리함. - 수치 계산 라이브러리 대부분이 큰 배열을 효율적으로 처리할 수 있도록 고도로 최적화 되어 있어 시간 효율 ↑ - 신경망의 데이터 전송 병목 현상을 줄여줌. 데이터 리딩 횟수가 줄어 CPU나 GPU로 순수 계산 수행을 할 수 있음. - 배치 처리를 통해 큰 배열로 이루어진 계산을 하게 되는데, 컴퓨터에서는 큰 배열을 한꺼번에 계산하는 것이 효율적임. x, t = get_data() network = init_network() batch_size = 100 accuracy_cnt = 0 for i in range(0, len(x), batch_size): x_batch = x[i:i+batch_size] y_batch = predict(netwo..
-
2. 신경망(5)AI 모델(딥러닝 기초)/2. 신경망 2023. 1. 5. 13:29
※ MNIST 데이터셋 - 손글씨 숫자 이미 집합 - 0~9까지의 숫자 이미지로 구성되고 훈련 이미지와 시험 이미지로 구성됨 - 훈련 이미지로 학습 후 시험 이미지로 테스트 하여 정확성을 판별 # coding: utf-8 try: import urllib.request except ImportError: raise ImportError('You should use Python 3.x') import os.path import gzip import pickle import os import numpy as np url_base = 'http://yann.lecun.com/exdb/mnist/' key_file = { 'train_img':'train-images-idx3-ubyte.gz', 'train_l..
-
2. 신경망(4)AI 모델(딥러닝 기초)/2. 신경망 2023. 1. 4. 13:38
이번 시간에는 출력층 설계법을 배워보자. 기계학습 문제는 크게 분류와 회귀로 나뉘게 된다. 분류(classification) : 사진 속 인물의 성별 분류 등 데이터가 어느 클래스에 소속하느냐의 문제 회귀(regression) : 입력 데이터에서 연속적인 수치를 예측하는 문제 분류단계에서 사용하는 Softmax 함수를 알아보자. ※ Softmax Function Softmax 는 위와 같은 식으로 정의되고 분모 처럼 출력층의 각 뉴런이 모든 입력신호에서 영향을 받는다. import numpy as np def softmax(a): exp_a = np.exp(a) sum_exp_a = np.sum(exp_a) y = exp_a / sum_exp_a return y ■ Softmax의 overflow 문제점..
-
2. 신경망(3)AI 모델(딥러닝 기초)/2. 신경망 2023. 1. 2. 16:53
신경망 3번째 시간에는 신경망을 직접 한 번 구현해 보자. 신경망 구현에 있어 가장 중요한 개념은 행렬의 연산이다. 행렬의 연산 : A(m×n) * B(n×r) = C(m×r) 우리는 행렬의 연산을 위와 같이 정의한다. m×n 행렬과 n×r 행렬이 곱해질 경우 새로운 m×r 행렬이 나타나게 된다. 여기서 앞 행렬의 열과 뒤 행렬의 행의 차원이 일치하지 않을 경우 행렬은 곱셈 연산을 할 수 없다. 이처럼 1×2 행렬과 2×3 행렬을 계산하여 1×3 행렬이 나오는 것을 확인할 수 있다. 이것을 똑같이 신경망에 적용시켜 볼 수 있다. 맨 처음 퍼셉트론 시간에 보았던 단순 신경망이다. 이 신경망을 위 행렬 연산을 적용시켜 보면, input 1×2 행렬과 weight 2×1 행렬이 만나서 output 1×1 y ..
-
2. 신경망(2)AI 모델(딥러닝 기초)/2. 신경망 2022. 12. 27. 13:29
이번 시간에는 지난 신경망(1)에서 알아본 계단 함수(Step function)에서 발전된 형태인 Sigmoid function과 ReLU function에 대해서 알아보자. ※ Sigmoid Function # Sigmoid 함수 구현 import numpy as np import matplotlib.pylab as plt def sigmoid(x): return 1 / (1 + np.exp(-x)) 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() 이렇게 Sigmoid 함수를 구현해 볼 수 있다. 그렇다면 Sigmoid 함수를 계단 함수와 비교해가며 특성을 살펴보자. ■ ..
-
2. 신경망(1)AI 모델(딥러닝 기초)/2. 신경망 2022. 12. 26. 13:36
지난 시간 퍼셉트론에 이어 퍼셉트론이 발전된 형태인 신경망에 대해서 알아보자. 신경망은 입력층 -> 은닉층 -> 출력층의 순서로 은닉층이 많아질 수록 복잡한 형태를 가진다. 신경망은 겉으로 보기에는 퍼셉트론과 큰 차이를 느낄 수 없지만, 가장 핵심적인 차이가 "활성화 함수"라고 할 수 있다. ※ 활성화 함수란? - 입력신호의 총합을 출력신호로 변환하는 함수. - 입력 신호의 총합이 활성화를 일으키는지 아닌지를 정하는 역할을 함. ■ 활성화 함수의 처리 과정 신경망과 퍼셉트론의 차이점을 제대로 볼 수 있는 예시 그림이다. 이 그림을 보면 퍼셉트론에는 없던 h(a)함수를 포함하는 큰 노드가 하나 더 있는 것을 알 수 있다. 이런 활성화 처리 과정의 노드를 하나 더 포함하고 있는 것, 활성화 함수 h(a)가 ..