본문 바로가기

Computer Science/[21-22] ML & DL10

[Autoencoder] Denoising Autoencoder란? 이번 캐글 TPS의 일등 리더보드 솔루션은 Denoising Autoencoder을 사용했다. Autoencoder Autoencoder란 feature selection, feature extraction에 사용되는 Feedforward 뉴럴넷이다. 인풋 데이터를 인코더를 이용해서 압축해 코드를 만들고, 코드를 디코더를 통해 아웃풋으로 만든다. 이 과정에서 인풋의 중요한 특성들을 뽑아내게 된다. Autoencoder를 만드는데 3가지가 필요한데, 1. 어떻게 encoding? 2. 어떻게 decoding? 3. 아웃풋과 타겟을 비교할 loss function Autoencoder은 fully connected NN이고, 4개의 하이퍼파라미터를 갖는다. 학습 방법은 기존 NN과 동일하게 backpropa.. 2022. 5. 2.
[LSTM] LSTM + Fully Connected Layer 두가지 방법 LSTM return_sequences LSTM의 return_sequences=True는 아웃풋 시퀀스 전체를 다음 layer로 넘긴다. return_sequences=False는 마지막 아웃풋만 다음 layer로 넘긴다. 따라서 더 적은 정보를 담고있기 때문에, accuracy가 떨어진다. y3 = LSTM(128, return_sequences=True)(y2) x2 = Dense(64, activation='swish')(y3) # ValueError: Shapes (None, 60) and (None, 1) are incompatible y3 = LSTM(128, return_sequences=False)(y2) x2 = Dense(64, activation='swish')(y3) return_.. 2022. 4. 23.
[CNN] Conv1D의 causal padding이란 convolution 연산은 인풋에 커널을 곱해서 feature map을 만든다. 연산을 거칠 때마다 feature map의 크기가 인풋의 크기보다 작아지는데, 이 문제를 해결하는 것이 padding이다. padding을 통해서 인풋의 크기 (spatial dimension)를 유지할 수 있고, 또 인풋의 모든 파트를 feature map에 반영할 수 있게된다. (padding이 없으면 2D 이미지의 중간 부분만 커널이 여러번 지나가게됨) causal padding 시계열 데이터를 다룰 때, 위의 사진처럼 4개의 인풋이 한개의 타겟에 영향을 미친다고 하자. 커널 사이즈를 4로 정해서 인풋과 아웃풋을 매핑할 수 있다. 하지만 2, 3, 4의 값은 4개의 인풋이 전부 존재하지 않는다. causal paddi.. 2022. 4. 22.
[cv] 시계열 데이터 Cross Validation - GroupKFold GroupKFold is a variation of k-fold which ensures that the same group is not represented in both testing and training sets. For example if the data is obtained from different subjects with several samples per-subject and if the model is flexible enough to learn from highly person specific features it could fail to generalize to new subjects. GroupKFold makes it possible to detect this kind of ov.. 2022. 4. 16.
[FE] 시계열 데이터 lag feature 추가하기 EDA를 통해서 어떤 feature들을 선택하거나 추가할지 정할 수 있다. 시계열 데이터를 다룰 때 lag feature을 추가할 수 있다. lag feature는 이전 타임스텝의 데이터를 뜻한다. lag value가 1이면 한개 전 타임스텝의 데이터, 2이면 두개 전 타임스텝의 데이터이다. 타임스텝별로 어떤 트렌드가 있다면 그만큼을 lag value로 정해준다. 예를들어 일주일마다 어떤 트렌드가 있으면 lag value을 7로 정해줄 수 있다. 또 이전 타임스텝의 데이터가 존재하지 않을 때 Nan값이 들어가기 때문에 pandas fillna()를 이용해서 0으로 바꿔준다. # lag value = 1 # sequence라는 컬럼을 groupby df[feature + '_lag1'] = df.group.. 2022. 4. 15.
[LSTM] LSTM unit, cell, layer에 대한 이해 LSTM unit (num_units), cell? LSTM cell은 3개의 게이트로 구성되어있고, 이를 통해서 기존 RNN보다 긴 시퀀스를 학습할 수 있게된다. 아래 사진은 한개의 cell에 대한 설명이다. keras LSTM의 인풋 중 하나인 num_units는 hidden state (output)의 차원이다. 위 사진의 빨간색 동그라미의 개수가 num_units이다. 따라서 위의 그림은 2개의 units를 가진 하나의 LSTM cell이다. 그리고 다음 cell이 전 hidden state (units, ht)와 input (xt)를 더하고 세개의 게이트를 지나서, 다음 hidden state (units, ht+1)를 계산한다. (= layer의 num_units에 지정해준 개수) 반복되는 L.. 2022. 4. 13.
[LSTM] keras.layers.LSTM()의 input_shape LSTM의 첫번째 layer에는 input_shape를 넣어줘야한다. LSTM 모델의 input은 항상 3D이다. = (# of samples, timestep, # of features) 3D로 넣어주기 위해서 기존 데이터를 형식에 맞게 reshape해줘야 한다. 예를 들어서 train.shape가 (1558080, 13) test.shape가 (733080, 13)일 때 train = train.reshape(int(len(train)/60), 60, 13) test = test.reshape(int(len(test)/60), 60, 13) print(f'train reshape: {train.shape}') print(f'test reshape: {test.shape}') # train reshap.. 2022. 4. 10.
[DL] Andrew Ng 교수님의 논문 읽는 법 - Compile a list of papers: try to create a list of research papers, posts and whatever text or learning resource you have. - Skip around the list: basically, you should read research papers in a parallel fashion; meaning try to tackle more than one paper at a time. Concretely, try to quickly skim and understand each of these paper and do not read it all, maybe you read 10–20% of each one and pr.. 2022. 1. 5.