본문 바로가기
책&강의 학습/올인원 패키지 :딥러닝&인공지능

[패스트캠퍼스 수강 후기] 인공지능강의 100% 환급 챌린지 26회차 미션

by 소한보 2020. 7. 24.

Part4-12. 가장 단순한 신경망을 통한 작동원리 - 07. (STEP 3) 얕은 신경망 구현

얕은 신경망을 이용한 다중분류 문제

numpy로 직접구현하는 방법사용

 # 시그모이드 함수
def sigmoid(x):
    return 1 / (1 + np.exp(-x))
 # 소프트맥스함수
def softmax(x):
    e_x = np.exp(x)
    return e_x / np.sum(e_x)    
 # 네트워크 구조 정의
class ShallowNN:
    def __init__(self, num_input, num_hidden, num_output):
        # weight값은 나중에 넣어줌
        self.W_h = np.zeros((num_hidden, num_input), dtype=np.float32) #히든 x 인풋
        self.b_h = np.zeros((num_hidden,), dtype=np.float32)     
        self.W_o = np.zeros((num_output, num_hidden), dtype=np.float32) # 아웃풋 x 히든 
        self.b_o = np.zeros((num_output,), dtype=np.float32)

    #시그모이드 함수를 매트릭연산해서, 히든레이어 weight를 곱하고 bias를 더해줌
    #소프트맥스 함수를 매트릭연산해서, 아웃풋 weight를 곱하고 bias를 더해줌
    def __call__(self, x):
        h = sigmoid(np.matmul(self.W_h, x) + self.b_h)
        return softmax(np.matmul(self.W_o, h) + self.b_o)
 # 데이터셋 가져오기 정리하기
dataset = np.load('ch2_dataset.npz')
inputs = dataset['inputs']
labels = dataset['labels']

 # 모델만들기
model = ShallowNN(2, 128, 10)

 # 파라미터 불러오기
weights = np.load('ch2_parameters.npz')
model.W_h = weights['W_h']
model.b_h = weights['b_h']
model.W_o = weights['W_o']
model.b_o = weights['b_o']

모델구동

outputs = list()
 # 예측값과 정답을 동시에 출력
for pt, label in zip(inputs, labels):
    output = model(pt)
    outputs.append(np.argmax(output))
    print(np.argmax(output), label)
outputs = np.stack(outputs, axis=0) #numpy로 변환

scatter plot으로 출력

 #정답 분포확인
plt.figure()
for idx in range(10):
    mask = labels == idx #각 레이블에 해당하는 mask생성 
    plt.scatter(inputs[mask, 0], inputs[mask, 1]) # 각 label별 다른색으로 그래프 그림
plt.title('true_label')
plt.show()

 #예측 분포확인
plt.figure()
for idx in range(10):
    mask = outputs == idx
    plt.scatter(inputs[mask, 0], inputs[mask, 1])
plt.title('model_output')
plt.show()

Part4-13. 쉽게 배우는 경사하강 학습법 - 01. (STEP 1) 모델의 학습과 최적화 이론

지도학습과 비지도학습

지도학습 - 정답을 알려주고 맞추는 방법
비지도학습 - 정답없이 유용한 정보를 추출

사람의 지도학습

나무의 다양한 모습을 보고 나무를 구분할 수 있게됨

학습매개변수

학습과정에 값이 변화하는 변수. 이 값에 따라 알고리즘 출력이 변화함

손실함수

알고리즘이 얼마나 잘못하고 있는지를 표현하는 지표, 정답과 알고리즘을 비교하는 데 사용
작을수록 좋음

학습환경의 정의

Data, Model, Loss가 중요
알고리즘학습 : 입력(trainable parameter)을 바꿔가면서 출력값(loss function)을 작아지게 하는 것과 동일
최적화 이론 : 출력갑을 가장 작게 또는 크게 하는 입력값을 찾는다
알고리즘학습 = 최적화 이론

딥러닝/인공지능 올인원 패키지 Online

댓글