목록인공지능 (25)
코딩세상
- 왜 CNN과 이미지 데이터인가? CNN은 대표적인 딥러닝 모델입니다. 이미지 분석 작업에 최적화된 성능을 보입니다. 앞에서 설명했던 개와 고양이의 이진분류를 진행할 때 사용할 수 있는 모델이 바로 이 CNN이며, CNN이 이미지 데이터를 잘 학습하는 원리를 알기 위해서 이미지 데이터를 이해할 필요가 있습니다. - 이미지 데이터 이미지 데이터란 사진, 그림 등을 컴퓨터로 저장한 데이터를 나타냅니다. 흔히 우리가 이미지를 저장 할 때의 형식인 JPG이미지와 PNG이미지로 유명합니다. - 픽셀(Pixel) 이미지는 픽셀이라는 불리는 점을 기반으로 구성됩니다. 그렇다면 여기서 픽셀이라는 것은 어떤것일까요? 픽셀은 Pictures Elements의 약자입니다. 위에서 본 그림처럼 이미지는 수많은 픽셀로 이루어..
이전 포스팅에서 저희는 딥러닝 모델 학습의 문제점 중 초기값 설정 문제를 알아보고 이를 방지하기 위한 방지 기법에 대해 알아보았습니다. 오늘은 딥러닝 모델 학습의 문제점 중 마지막 문제인 과적합 문제와 방지 기법에 대해 알아보겠습니다. - 딥러닝 모델 학습에서의 과적합 방지 기법 딥러닝 모델 학습에서의 과적합(overfitting)문제는 모델이 학습 데이터에 너무 과하게 학습되어 다른 데이터가 들어왔을 때 성능이 현저하게 떨어지는 것을 말합니다. 이와 같은 과적합 현상을 방지하기 위해 다양한 방지 기법이 등장하였는데, 정규화(Regularization) 드롭아웃(Dropout) 배치 정규화(Batch Normalization) 다양한 방지 기법 중 위에 적어논 3개의 방지 기법에 대해 알아보겠습니다. -..
이전 포스팅에서 저희는 딥러닝 모델 학습의 문제점 중 기울기 소실 문제를 알아보고 이를 방지하기 위한 활성화 함수에 대해 알아보았습니다. 오늘은 딥러닝 모델 학습의 문제점 중 세번째 문제인 초기값 설정 문제와 방지 기법에 대해 알아보겠습니다. - 잘못된 초기값 설정 - 초기화의 중요성 위 그림과 같이 처음 학습을 진행할 때 가중치의 값이 w = 100으로 설정 되어있는 것처럼 초기값을 잘못 설정하게 되면 오른쪽의 그래프처럼 비 정상적인 값이 나오게 됩니다. - 가중치 초기화(Weight Initialization) 그렇다면 가중치 초기화는 왜 해줘야될까요? 바로 활성화 함수의 입력값이 위 그림처럼 너무 커지거나 혹은 너무 작아지지 않게 만들어주려는 것이 가중치 초기화의 핵심입니다. - 초기화 설정 문제 ..
이전 포스팅에서 저희는 딥러닝 모델 학습의 문제점 중 학습 속도 문제를 알아보고 이를 해결한 최적화 알고리즘에 대해 알아보았습니다. 오늘은 딥러닝 모델 학습의 문제점 중 두번째 문제인 기울기 소실문제와 방지 기법에 대해 알아보겠습니다. - 딥러닝 모델 학습 방법 되짚어보기 이전에 배웠듯이 딥러닝 모델은 순전파와 역전파의 반복을 통해 우리가 목표하고자 하는 결과를 도출해내는 모델입니다. 여기서 역전파에 대해 다시 한번 의미를 되짚어보면 나의 목표 target 값과 실제 모델이 예측한 outpu값이 얼마나 차이나는지 구한 후 오차값을 다시 뒤로 전파해가며 변수들을 갱신하는 알고리즘입니다. - 기울기 소실 문제(Vanishing Gradient)의 발생원인 그렇다면 왜 딥러닝 모델에서 기울기 소실 문제가 발생..
- 학습 속도 문제의 발생 원인 앞서 설명한 4가지의 문제중 우선 학습 속도 문제의 발생 원인에 대해 알아보겠습니다. 앞서 텐서플로우로 딥러닝 모델 구현하기 내용에서 하이퍼 파라미터 중 batch에 대해 설명했었습니다. 다시 한번 설명하면 Batch는 나눠진 데이터셋 (보통 mini-batch라고 표현)를 의미합니다. 최근엔 이렇게 Batch size를 지정하여 데이터 셋을 나눠서 학습을 진행하지만 과거에는 데이터가 증가하는데도 불구하고 전체 학습 데이터 셋을 사용하여 손실함수를 계산하기 때문에 계산량이 너무 많아지는 문제가 생겼습니다. - 학습 속도 문제 해결 방법 이러한 문제를 해결하기 위해 전체 데이터가 아닌 부분 데이터만 활용하여 손실함수를 계산하자 라는 의견이 나왔고 이를 해결할 수 있는 손실 ..
- 데이터 증가와 딥러닝 모델의 한계점 실생활 문제 데이터의 차원이 증가하고, 구조가 복잡해졌습니다. 즉, 이로인해 다양한 문제가 발생하게 되고 , 기술려그이 부족으로 딥러닝 기술은 실질적인 한계를 마주하게 됩니다. - 다양한 문제점 위에서 설명한 것처럼 데이터 문제 이외에도 딥러닝 모델을 훈련시키면서 발생하는 다양한 문제점이 존재합니다. 학습속도 문제 기울기 소실 문제 초기값 설정 문제 과적합 문제 - 1. 학습 속도 문제 우선 학습 속도 문제에 대해서 알아보겠습니다. 왜 딥러닝을 진행하면서 학습 속도의 문제가 발생하게 될까요? 그건 바로 데이터의 개수를 통해 알 수 있습니다. 최근에 데이터의 양이 과거에 비해 폭발적으로 증가하면서 우리가 여러개의 과목을 공부하면 그만큼 시간이 더 오래 걸리듯이 딥러닝..
- 딥러닝 모델 구현 순서 딥러닝 모델은 아래와 같은 순서로 진행되게 됩니다. 데이터셋 준비하기 딥러닝 모델 구축하기 모델 학습시키기 평가 예측하기 오늘은 딥러닝 모델을 구현하는 4단계를 알아보겠습니다. - 1. 데이터셋 준비하기 : Epoch와 Batch 데이터셋을 준비하는 과정은 여러가지 과정을 통해 준비할 수 있습니다. AI 허브, 공공데이터포털과 같은 데이터셋 사이트를 이용하여 원하는 데이터셋 탐색, kaggle 서칭을 통한 데이터셋 탐색, 직접 필요한 데이터 셋 제작 등 많은 방법을 확인 할 수 있습니다. 이렇게 데이터셋을 준비하면 학습 시키기 전에 우리는 이러한 데이터셋을 얼마나 분리하여 인공지능 모델에 학습시킬지 정할 수 있습니다. 데이터의 양, 복잡도에 따라 우리가 설정하는 하이퍼 파라미터..
- 텐서 다뤄보기 텐서 플로우에서는 텐서(Tensor)형으로 생성되는 연산을 제공합니다. 이러한 텐서는 다양한 타입을 가지고 있습니다. 상수 텐서 시퀀스 텐서 변수 텐서 가 있으며, 각각의 텐서들은 우리가 프로그램을 작성할 때 사용하는 역할과 동일한 역할을 합니다. - 상수 텐서(Constant Tensro) import tensorflow as tf # 상수형 텐서 생성 tensor_a = tf.constant(value, dtype=None, shape=None, name=None) 상수 텐서는 그 의미대로 변하지 않는 값을 가지는 텐서를 의미합니다. 각각의 값이 의미하는 바는 아래의 표와 같습니다. value : 반환되는 상수값 shape : Tensor 차원 dtype : 반환되는 Tensor 타..
- 딥러닝 모델 구현을 위해 학습해야 할 분야 딥러닝 모델을 작성하기 위해서는 파이썬을 알고 있어야하며, 딥러닝 모델은 좋은 연산 장치에 따라 성능이 달라지므로 하드웨어에 대한 지식을 가지고 있어야하며 이러한 연산장치를 제어하기 위해서 C/C++을 알아야 하는 등 배울 것을이 너무 많습니다. - 프레임워크를 통한 딥러닝 모델 구현 우리가 직접 딥러닝 모델을 직접 구현하기에는 너무 복잡하기 때문에 딥러닝 모델의 학습과 추론을 위한 프로그램들이 현재는 많이 구현되어있습니다. 대부분 텐서플로, 파이토치에 대해 많이들 들어보셨을텐데, 우리는 이러한 프레임워크를 통해 딥러닝 모델을 쉽게 구현하고 사용할 수 있게 되었습니다. - 프레임워크 선택하기 그러면 우리는 어떤 프레임워크를 사용하는 것이 가장 좋을까요? 그에..
- 딥러닝 모델이란? 딥러닝 모델이란 앞서 1장에서 설명했던 것처럼 퍼셉트론을 여러개 쌓은 다층 퍼셉트론 중 히든 레이어의 개수가 3층 이상인 모델을 뜻합니다. - 딥러닝 모델의 구성 요소 딥러닝 모델은 위 그림과 같이 노드간의 연결 강도를 나타내는 가중치(Weight) 각 층을 구성하는 요소인 Node/Unit 모델을 구성하는 층인 Layer 로 이루어져 있습니다. 각각에 대한 설명은 추후에 더 자세히 설명하겠습니다. - 딥러닝 모델의 학습 방법 딥러닝 모델은 Loss function(손실 함수)의 값을 최소화 하기 위해 최적화(Optimization) 알고리즘을 적용합니다. - 손실함수(Loss Function)과 최적화(Optimizer) 손실함수는 위 그림 중 왼쪽의 그래프와 같이 실제 값과 예측..