개발 블로그
[공학연구실습2/1주차]openAI/Keras/ANN/CNN이란? 본문
1. openAI Gym 환경
openAI에서 개발한 openAI Gym(https://www.gymlibrary.dev/)은 다양한 시뮬레이션 환경을 제공하고, 이를 이용해 기계 학습/인공지능/강화 학습 등의 연구에 활용할 수 있다.
openAI는 정확하게 구현된 환경을 제공하는데, 잘못 구현된 환경을 사용하면 학습이 안되거나 잘못된 규칙을 학습하는 경우가 발생해 강화 학습 성능을 평가하기 위해서는 정확한 환경이 필요하다. 또한 openAI Gym은 프로그래밍 또는 제어하기 쉬워 편리하다.
2. google colab 개발 환경
google colab은 클라우드 기반의 무료 Jupyter 노트북 개발 환경이다.
colab은 웹 브라우저에서 텍스트와 프로그램 코드를 자유롭게 작성할 수 있는 일종의 온라인 텍스트 에디터이다.
3. Keras와 Tensorflow
- Keras
Keras는 파이썬으로 구현된 쉽고 간결한 딥러닝 라이브러리이다.
Keras는 쉽게 딥러닝 모델을 개발하고 활용할 수 있도록 직관적인 API를 제공하고, Tensorflow 위에서 동작하는 라이브러리이다. 비교적 단순한 신경망을 구성한다면 Keras만으로 충분한데 Tensorflow를 사용하는 쪽이 훨씬 디테일한 조작이 가능하다.
Keras의 장점
- 사용자의 친화성, 모듈성, 확장성을 통해 빠르고 간편한 프로토타이핑이 가능하다.
- CPU와 GPU에서 매끄럽게 실행된다.
- Tensorflow
Tensorflow는 google에서 개발한 머신러닝/딥러닝을 쉽게 구현할 수 있도록 기능을 제공하는 라이브러리이다.
Tensor란 딥러닝에서 데이터를 표현하는 방식으로, 행렬로 표현할 수 있는 2차원 형태의 배열을 높은 차원으로 확장한 다차원 배열이다.
4. ANN, DNN, CNN
- ANN(Artificial Neural Network)
사람의 신경망 원리와 구조를 모방하여 만든 기계학습 알고리즘이다.
ANN은 인간의 뇌에서 뉴런들이 신호, 자극 등을 받고, 그 자극이 어떤 임계값(threshold)을 넘어서면 결과 신호를 전달하는 과정을 모방했다. 여기서 신호, 자극은 input data, 임계값은 가중치(weight), 자극에 의한 행동은 output data이다.
신경망은 다수의 입력 데이터를 받는 입력층, 데이터를 출력하는 출력층, 입력층과 출력층 사이에 존재하는 레이어들이 존재한다. 모델을 구성한다는 것은 레이어들의 갯수와 노드의 개수를 구성하는 것이고, 이때 모델을 잘 구성해 원하는 output data를 얻는 것(예측)이 모델의 목표다.
ANN의 문제점
- 학습과정에서 파라미터의 최적값을 찾기 어렵다
- overfitting에 따른 문제
- 레이어들이 많으면 학습시간이 너무 느리다.
- DNN(Deep Neural Network)
은닉층(레이어)을 2개 이상 지닌 학습 방법이다.
컴퓨터가 스스로 분류레이블을 만들어 내고 공간을 왜곡하고 데이터를 구분짓는 과정을 반복하여 최적의 구번선을 도출해 낸다.
- CNN(Convolution Neural Network)
기존엔 데이터에서 지식을 추출해 학습이 이뤄졌지만, CNN은 합성곱 계층을 통해 데이터의 특징을 추출하여 특징들의 패턴을 파악하는 구조다.
convolution 과정과 pooling 과정을 통해 진행되며 이 두 layer를 복합적으로 사용하여 알고리즘을 구성한다.
'전공 공부 > 공학연구실습' 카테고리의 다른 글
[공학연구실습2/1주차] 강화학습이란 (0) | 2022.11.22 |
---|---|
[공학연구실습2/1주차]VSCode에서 Tensorflow 환경 구축 (0) | 2022.11.22 |
[공학연구실습2/1주차]딥러닝 프레임워크 활용법(Keras/TF 또는 PyTorch 사용) (0) | 2022.11.11 |
[공학연구실습2/1주차]머신런링/딥러닝 모델 성능 분석 (0) | 2022.11.05 |
[공학연구실습2/1주차]Keras로 ANN,CNN 구현 (0) | 2022.11.03 |