전체 글 84

[DL] 역전파를 이용한 2층 신경망 학습 구현

구현이라기보단 제가 스스로 이해하기 위해 주석 및 설명을 달아놓는 포스팅입니다. 개념 설명이 아닌 포스팅이라 코드를 보실 분 아니면 넘어가셔도 좋을 것 같습니다. # coding: utf-8 import sys, os sys.path.append(os.pardir) # 부모 디렉터리의 파일을 가져올 수 있도록 설정 import numpy as np from common.layers import * from common.gradient import numerical_gradient from collections import OrderedDict class TwoLayerNet: def __init__(self, input_size, hidden_size, output_size, weight_init_std..

[DL] 역전파 ( Backward-propagation )

다층 퍼셉트론(MLP) 같은 깊은 신경망이 등장한 후 선형으로 분류가 가능하지 않은 데이터들을 분류하는 것이 가능해졌습니다. 하지만 모델의 깊이(depth)가 깊어질수록, 즉 모델의 층이 많아질수록 모델의 가중치의 수는 기하급수적으로 많이 늘어납니다. 기존의 경사하강법(수치미분)은 기울기를 이용하여 가중치를 업데이트하는 방법을 사용하는데, 이 때 수치미분 방법으로 여러 층에 존재하는 가중치들을 모두 하나하나 업데이트하는 것은 매우 많은 연산량과 메모리를 요구합니다. 이를 해결하고자 고안된 알고리즘이 역전파 알고리즘(Backpropagation algorithm) 입니다. 역전파를 설명하는 대표적인 2가지 방법은 계산 그래프(Computational graph) 로 설명하는 방법과, 다변수 미분을 직접 수..

[Python] 람다 표현식 ( lambda expression )

람다 표현식 ( lambda expression ) 이란? 람다 표현식은 함수의 기능을 런타임에 생성해서 사용할 수 있는 익명 함수입니다. 보통 함수는 def 라는 키워드를 통해서 기능을 정의하고 여러 코드에서 해당 함수를 호출하여 사용할 수 있지만 람다 표현식은 한번 쓰고 버리는 일시적인 함수 입니다. 람다 표현식은 함수를 간편하게 작성할 수 있어서 다른 함수의 인수로 넣을 때 주로 사용합니다. 람다 표현식의 형식 람다 표현식은 아래와 같은 형태로 만듭니다. lambda 매개변수리스트: 표현식 예를 들어 아주 간단한 sum(x, y) 함수가 있다고 가정해봅시다. def sum(x, y): return x+y 이 함수를 람다식으로 표현하면 아래와 같습니다. >>> lambda x, y : x+y # 위 ..

[DL] 학습 알고리즘 구현 ( 2층 신경망 )

앞선 포스팅에서 다루었던 내용들을 종합하여 간단한 구조의 신경망 학습을 전체적으로 구현해보는 포스팅입니다. 구현 하기 전 신경망 학습의 절차에 대해 간단히 확인해보면 아래와 같습니다. 미니배치 - 훈련 데이터의 일부를 무작위로 가져와 학습 기울기 산출 - 각 가중치 매개변수의 기울기를 구함 ( 손실함수 값을 줄이기 위해 ) 매개변수 갱신 - 가중치 매개변수를 학습률과 기울기의 곱을 뺌으로써 갱신 반복 - 1~3 반복 2층 신경망 클래스를 구현하는 것부터 시작됩니다. class TwoLayerNet: def __init__(self, input_size, hidden_size, output_size, weight_init_std=0.01): # 가중치 초기화 self.params = {} self.para..

[DL] 경사 하강법 ( Gradient Descent )

기계학습 문제는 학습의 목표가 최적의 매개변수를 찾는 것이고, 이는 곧 손실 함수가 최솟값이 될 때의 매개변수를 찾는 것과 동일합니다. 이 때 기울기를 사용해서 함수의 최솟값을 찾는 아이디어가 경사 하강법(Gradient Descent) 입니다. [DL] 손실 함수 ( Loss function ) 신경망 학습이란 train 데이터로부터 가중치 매개변수의 최적값을 자동으로 얻는 것을 뜻합니다. 이번 포스팅에서는 신경망이 학습할 수 있도록 해주는 지표인 손실 함수에 대해 알아보도록 하 songsite123.tistory.com 지난 포스팅에서 손실 함수의 개념을 알아보았습니다. 손실함수는 신경망의 성능의 '나쁨'을 나타내는 지표로 현재의 신경망이 훈련 데이터를 얼마나 잘 처리하지 못하는가 를 나타냅니다. 이..

[dacon 분석] 반도체 박막 두께 분석 경진대회 우승 코드 리뷰

데이콘이란, 일종의 한국판 캐글로 데이터 분석과 여러 데이터를 머신러닝으로 다뤄보며 경진대회까지 참여할 수 있는 기회를 제공하는 사이트입니다. 외부교육을 듣다 처음으로 데이콘이라는 것에 대해 알고 참가하게 되었는데 아무것도 모른 채 참여할 수 없기 때문에 지난 대회에서 1등을 한 코드들을 분석해보고, 직접 colab으로도 이것저것 바꿔가며 돌려보는 포스팅입니다. 이번 포스팅에서 다루는 주제는 반도체의 박막 두께 분석 에 대한 내용입니다. 월간 데이콘 반도체 박막 두께 분석 경진대회 - DACON 분석시각화 대회 코드 공유 게시물은 내용 확인 후 좋아요(투표) 가능합니다. dacon.io 위 사이트에서 데이터를 다운 받을 수 있습니다. 우승 코드는 포스팅 맨 하단의 주소에서 다운 가능합니다. 최근 고사양 ..

dacon 2023.08.15

[DL] 수치 미분 ( Numerical differentiation )

뉴럴 네트워크는 데이터를 통해 학습을 할 때 "미분"을 이용하여 학습을 합니다. $$ f'(x) = \lim_{h \to 0} \dfrac{f(x+h)-f(x)}{h} $$ 미분 계수는 극한으로 정의됩니다. 어떤 함수의 순간 변화율을 구하는 것을 의미하고 고등학교 수학 시간에 이미 여러 번 배운 수식이죠. 그런데 딥러닝에서는 컴퓨터한테 극한값이라는 고차원 적인 개념을 알려주고 프로그래밍하기 복잡하기 때문에 엄밀한 미분 계수는 아니지만, 그와 비슷한 값이 나오는 평균 변화율을 사용하게 됩니다. 아이디어는 매우 작은 $h$를 잡게 되면 실제 미분계수와 거의 동일한 값을 가진다는 것이죠. 즉 미분 계수를 다음과 같이 충분히 작은 $h$를 잡아 근사시킵니다. $$ \dfrac{f(x+h)-f(x)+}{h} $$..

[DL] 정보 엔트로피 ( Information Entropy )

정보이론은 최대한 많은 데이터를 매체에 저장하거나 채널을 통해 통신하기 위해 데이터를 정량화하는 수학의 한 분야입니다. 쉬운 말로 정보량을 수치화 할 수 있을까? 라는 질문에서 시작된 것이 정보이론입니다. 정보 엔트로피란 정보 이론에서 나타난 개념으로, 보통 엔트로피라는 단어는 화학이나 물리에서, 열역학에 대해 배울 때 가장 먼저 듣게 될텐데 실제로 정보 엔트로피는 섀넌이 열역학에서 정의된 엔트로피를 확장한 개념으로 열역학에서의 엔트로피와 크게 다르지 않은 개념입니다. 딥러닝을 하는데 갑자기 무슨 열역학? 엔트로피? 라고 생각할 수 있지만 지난 포스팅에서 소개했듯 손실 함수로 자주 사용되는 크로스 엔트로피라는 것도 배웠고, 이를 이해하기 위해서는 엔트로피에 대해 자세히 알 필요가 있습니다. 또한 자연어 ..

You Only Look Once: Unified, Real-Time Object Detection (CVPR 2016) - YOLO v1

2016 CVPR에 발표된 You Only Look Once: Unified, Real-Time Object Detection 논문에 대한 내용으로 YOLO 시리즈의 첫 번째 논문 YOLO v1 이라고도 많이 불립니다. 객체 탐지 분야의 유명한 논문으로, 논문 발표 당시 주로 사용되던 2 stage object detection 방법을 대신하여 입력 이미지를 CNN으로 추출해 바로 계산하는 1 stage object detection 방법을 제안하는 논문입니다. 기존의 Classifier 방식을 공간적으로 분리된 Bounding box와 관련된 Class 확률에 대한 regression 문제로 재정의하여 2 stage detector들과 성능이 비슷하면서도 훨씬 빠른 속도를 가지고, 일반화 능력이 좋아 ..

[DL] 손실 함수 ( Loss function )

신경망 학습이란 train 데이터로부터 가중치 매개변수의 최적값을 자동으로 얻는 것을 뜻합니다. 이번 포스팅에서는 신경망이 학습할 수 있도록 해주는 지표인 손실 함수에 대해 알아보도록 하겠습니다. 손실 함수 ( Loss function ) 란? 신경망 학습에서는 현재의 상태를 하나의 지표로 표현합니다. 신경망은 이러한 하나의 지표를 기준으로 최적의 매개변수 값을 탐색하는데, 이 때 신경망 학습에서 사용되는 지표를 손실/비용 함수(Loss function, Cost function) 이라고 합니다. 즉 손실 함수란 신경망의 성능의 '나쁨'을 나타내는 지표로 현재의 신경망이 훈련 데이터를 얼마나 잘 처리하지 못하는가 를 나타냅니다. 인공신경망의 성능이 좋을수록 손실 함수의 값이 낮고 성능이 나쁠수록 손실함수..

728x90