본문 바로가기

VGGNet (이론) 【3】최근 CNN 응용 모델 이해하고 사용하기 / VGGNet (이론) VGG는 기본적인 CNN의 구조에 깊이를 증가시킨 형태이다. 논문 "Very Deep Convolutional Networks For Large-Scale Image Recognition" 의 제목과 개요에 나와있 듯 VGG는 신경망의 깊이를 깊게 하는데 중점을 두었다. 이러한 이유로 (3,3)의 작은 필터 사이즈를 주어 깊이를 최대로 늘리고자 했다. 필터가 작으면 피처맵의 사이즈가 조금씩 줄어드므로 합성곱 층과 풀링 층을 많이 쌓을 수 있기 때문이다. VGG팀은 최대 19개 까지 층을 늘리는 실험을 통해 층이 16개 이상일 때 성능이 좋다는 것을 발견하고 층이 16개와 19개인 VGG16, VGG19 모델을 만들었다. 아래의 표를 .. 더보기
강화학습 (Reinforce Learning) 【1】Deep Learning 시작하기_머신러닝의 종류 강화학습 (Reinforce Learning) 강화학습은 앞서 소개한 세 종류의 학습과는 조금 다른 개념으로 컴퓨터의 동작이 적절한지에 대해 피드백이 있는 학습 방법을 말한다. 학습하는 컴퓨터를 에이전트라고 하며 에이전트가 어떠한 환경(environment) 안에서 하나의 행동(action)을 했을 때 옳다면 보상을(reward), 잘못되었다면 벌점(penalty)을 부여한다. 즉, 특정 환경에서 에이전트가 가장 많은 보상을 받기 위해 어떻게 행동해야 하는지 강조하는 것이다. 강화학습은 입력과 출력에 대한 데이터 쌍을 필요로 하지 않으며 차선의 행동도 허용하지 않는 특징이 있다. 강화학습에 대한 설명은 이 정도로 끝내겠다. 강화학습에 대해 자세히 알.. 더보기
Drop-out 【1】Deep Learning 시작하기_규제하라는 게 있다 Drop-out 드롭 아웃은 노드를 임의로 끄면서 학습하는 기법이다. 은닉층에 배치된 노드 중 일부를 임의로 끄면서 학습을 한다. 꺼진 노드는 신호를 전달하지 않으므로 지나친 학습을 방지하는 효과를 주는 것이다. 왼쪽의 그림은 일반적인 신경망이고 오른쪽의 그림은 드롭 아웃을 적용한 신경망의 모습이다. 일부 노드들이 꺼지고 남은 노드들로 신호가 연결되는 신경망의 형태를 볼 수 있다. 어떤 노드를 끌 지는 학습할 때마다 무작위로 선정이 되며, 시험 데이터로 평가할 때는 노드들을 전부 사용해 출력하되 노드 삭제비율(드롭아웃 비율이라고 한다)을 곱해 성능을 평가한다. 작성자 홍다혜 ghdek11@gmail.com / 이원재 wonway333@gmail... 더보기
[머신러닝] GRU란? 케라스로 GRU 은닉층 추가하기 (코드) 1. GRU란? GRU(Gated Recurrent Unit)란 LSTM과 유사한 구조를 가지는 모델을 말하는데요, LSTM의 장기 의존성 문제에 대한 해결책을 유지하면서 은닉 상태를 업데이트하는 계산을 감소시킨 알고리즘을 말합니다. 또한 GRU의 가장 큰 특징은 출력게이트, 입력게이트, 삭제게이트를 가진 LSTM과 달리 업데이터 게이트와 리셋 게이트만 갖고 있다는 점입니다. LSTM과 GRU가 비슷한 구조를 가지고 있지만 어느 게 더 좋다고 말할 수는 없는데요, 다만 GRU에서 매개변수의 양이 적기 때문에 데이터의 양이 적을 땐 GRU를 사용하는 것이 좋고, 데이터의 양이 많다면 LSTM이 적절할 수 있습니다. 2. 케라스로 GRU 은닉층 추가하기 한편, 케라스를 이용해 GRU 은닉층을 추가하고 싶다면.. 더보기
[머신러닝] [single / multi / shallow / deep] neural network 명칭 정리 머신러닝에서 여러 neural network를 공부하다 보면, neural network에 대해서 이름을 single layer neural network, multi layer neural network, 또는 shallow neural network, deep neural network라고 불리어지는 것을 확인할 수 있는데요, 이러한 명칭에 대해서 처음에 정리가 안되어 있으면 헷갈리실 수 있습니다. 따라서 각 명칭은 어떠한 neural network를 가리키는지 빠르게 알아보도록 하겠습니다. 1. single layer neural network vs multi layer neural network 먼저, single layer neural network는 말 그대로 neural network에서 층.. 더보기
[머신러닝] MSE, MAE 뜻 & 구현 코드 1. MSE(Mean Squared Error) MSE란 Mean Squared Error의 약자로, 말 그대로 예측 값과 실제 값의 차이에 대한 제곱을 평균한 값을 말합니다. MSE의 경우 오차가 작으면 성능이 좋을 수 있지만, 과대적합이 될 수도 있습니다. 한편, MSE는 오차에 대해서 예측한 값이 실제 값보다 큰지, 작은지를 알 수 없다는 특징을 갖고 있습니다. - MSE : 코드로 구현하기 사이킷런(Scikit-learn) 패키지에서는 MSE를 구하는 라이브러리를 제공하는데요, 만약 실제 값 'true_y'와 예측한 값 'pred_y'의 MSE 값을 구하고 싶다면 다음과 같이 코드를 작성하면 됩니다. from sklearn.metrics import mean_squared_error #필요한 라이.. 더보기
[데이터분석] 데이터프레임 : inplace = True 뜻 데이터프레임을 다루는 코드를 구글링 하다 보면, 해당 함수 안에 inplace = True 라는 코드가 입력되어 있는 것을 많이 볼 수 있는데요, inplace = True 란 무엇을 의미하는 걸까요? 먼저, 다음과 같은 데이터프레임이 있다고 가정해보겠습니다. import pandas as pd df = pd.DataFrame( {'name': ['coffee', 'tea', 'juice','milk', 'ade'], 'price': [3000, 4000, 5000, 2000, 5000], 'rating': [4, 3.5, 3.7, 3, 2], 'category': [1,2,3,4,4]}) display(df) namepriceratingcategory 0coffee30004.01 1tea40003.52.. 더보기
[파이썬] Boolean이란? bool 자료형 알아보기(True/False) Boolean(불리언) 이라는 이름에 대해서는 조금 생소할 수 있는데요, Boolean은 기본 정수형, 실수형, 문자열 자료형처럼 기본 자료형 중 하나입니다. Boolean은 True 또는 False 값만 바인딩하는 자료형이기도 하는데요, 비교 연산자에서 반환 값으로 사용되는 True와 False 값이 바로 Boolean 데이터입니다. 한 번 아래 코드를 살펴보도록 하겠습니다. val1 = True print(type(val1)) val1 이라는 변수에 'True' 라는 boolean 자료형 데이터를 입력했고, va1의 type을 확인한 결과 'bool' 이라고 출력이 되었습니다. 여기서 bool 이란 boolean을 말합니다. 아래 코드도 한 번 살펴보도록 하겠습니다. val2 = 3 > 1 val3 .. 더보기
[파이썬] IndexError: list index out of range 에러 해결 방법은? 파이썬에서 코딩을 하다 보면 IndexError: list index out of range와 같은 에러가 발생하기도 하는데요, 어떠한 경우에 나는 에러일까요? 에러 내용을 보면, 인덱스에러 : 범위를 벗어난 리스트 인덱스라고 되어 있습니다. 즉, 리스트 안에 데이터 수가 부족하다면 발생하는 에러입니다. 예를 들어, 5개의 데이터를 가지고 있는 리스트에서 for문을 이용하여 데이터를 하나씩 출력할 때, for문을 5번 돌리면 되지만 만약 6번 이상 돌려서 6번째 데이터를 출력할 때 IndexError 가 발생한답니다. 이를 한 번 실행해보겠습니다. list1 = [1, 2, 3, 4, 5] for i in range(6) : print(list1) 1 2 3 4 5 IndexError: list inde.. 더보기