본문 바로가기

전체 글

(180)
[딥러닝] 케라스 실습 01. AND Function 문제 케라스에서 딥러닝을 하는 과정은 아래와 같습니다. 01. 문제정의 여기서 실습할 AND Function은 AND Gate의 역할을 하는 1의 값이 나오게 만드는 딥러닝을 해 보는 것이다. 02. 데이터셋 준비 #1. Numpy 가져오기 import numpy as np print(np.__version__) #2. 입력/출력 데이터 만들기 X = np.array([[0,0], [1,0], [0,1], [1,1]]) y = np.array([[0], [0], [0], [1]]) 먼저 input output의 데이터 셋을 위해서 numpy를 import합니다. numpy는 행렬이나 일반적으로 대규모 다차원 배열을 쉽게 처리 할 수 있도록지원하는 파이썬의 라이브러리입니다. 03. 모델 설정 # 3. Keras..
[딥러닝] 케라스의 기초 개념 케라스를 이용해서 딥러닝을 설계를 할 때, 설계도 자체를 모델이라고 표현합니다. 이 모델은 네트워크, 목표함수, 최적화기로 구성이 됩니다. 모델, 설계도를 제작하기 위해서 케라스 모델에서 Sequential을 불러옵니다. Sequential의 뜻은 순차적, 연속적이라는 뜻입니다. 이것은 MLP의 레이어가 순차적으로 쌓여가는 것을 의미합니다. from keras.models import Sequential model = Sequential() 네트워크인 머리 층은 뇌, Perceptron을 설계하는 과정입니다. 입력값에 따른 출력값이 있게 됩니다. 어떻게 학습을 할 것이냐는 문제를 설계하는 것입니다. 이 문제를 어떻게 학습할래?라는 알고리즘 설계와 같습니다. from keras.layers. import ..
[딥러닝] 3. 딥러닝시 주의할 점 딥러닝시 주의할 점은 2가지이다. Vanishing Gradient와 Overfitting의 문제이다. 1. Vanishing Gradient 기울기가 사라진다는 뜻이다. 이 전에 출력값으로 0혹은 1을 출력한다고 됬었다. 그런데 실제로는 0혹은 1을 출력하는 경우도 있지만, Sigmoid Function을 써서 0에서 1사이의 특정한 값들을 출력하게 된다. 그런데 문제는 Sigmoid Function을 쓸 시에 Perceptron을 통과하면 통과할 수록 그 값이 희미해지는(Vanishing)의 결과를 가져오게 된다. 처음 출력값은 괜찮지만, 이후 Back Propagation을 하려고 하면 원래의 input값으로 돌아가기 힘든 상황이 발생하게 되는 것이다. 이러한 문제를 해결하기 위해서 sigmoid대..
[딥러닝] 2. 딥러닝의 동작과정 딥러닝에서 배워야 할 기본적인 개념은 Perception MLP Weight Initialization Forward Propagation Cost Function Back Propagation Optimizer 와 같고, 여기서는 Weight Initialization의 개념과 Forward Propagation, Back Propagation을 배울것이다. 1. Weight Initialization Linear Binary Classifier을 처음에 각 노드마다 식을 세운다. 각각의 식은 Perceptron인 f∑wnxn+b라는 식이고, 아래의 식에서 wn이 가중치이고 0과 1이 고정된 feature xn의 값이다. b는 추가되는 값이다. 0과 1을 넣었을 때 1이나오게 가중치를 조정하려면 아래와..
[딥러닝] 01. 딥러닝 기초이론-MLP 딥러닝에서 배워야 할 기본적인 개념은 Perception MLP Weight Initialization Forward Propagation Cost Function Back Propagation Optimizer 와 같고, 여기서는 Perceptron과 Weight Initialization에서 배울 것이다. 1. Perception MLP MLP모델이란? Multi Layer Perceptron의 약자이다. Perceptron은 네트워크 층으로써 하나의 뉴런같은 층을 의미한다. A에서 배운 결과를 B에다가 넘겨주는 뉴런과 같은 모양으로 학습을 한다. 뉴런의 값이 다음 뉴런에게 전달하듯이 Peceptron이 받은 값은 다음 값으로 전달하는 층을 형성하는데 이것을 MLP(Multi Layer Percept..
[알고리즘] BFS와 DFS 쉽게 이해하기 DFS는 미로찾기와 같습니다. 이미 방문한 지점을 check, flag로 표현해주고 연결된 그 다음지점부터 진행하면 됩니다. 만약 끝까지 갔는데 해당 지점이 막혀있다면, 막히지 않았던 그 전지점으로 돌아가서 시작합니다. BFS는 처음 있는 지점에서부터 시작하는 것과 다릅니다. 처음부터 영역을 넓혀가며 하나하나 확인합니다. DFS(Depth First Search) 깊이 탐색 알고리즘에서 가장 중요한 2가지는 flag과 stack진입 조건입니다. 진입시에 flag로 먼저 판별하면 됩니다. 그리고 stack에 넣을 범위와 조건을 설정하면 됩니다. int number = 7; int flag[8]; vector a[8]; void dfs(int x){ //스택에 진입시 flag로 방문했는지 검증한다. if(f..
[알고리즘] 선택정렬 쉽게 생각하기 Selection Sort 선택 정렬은 i기준으로 i의 오른쪽(정렬되지 않은 곳)에서 가장 작은 값을 찾은 뒤에 i랑 바꾸는 것입니다. arr[i]라는 기준 값을 key나 min에 담는 것은 같지만, 내부적으로 정렬하는 것이면 삽입정렬이됩니다. 그런데 내부는 이미 정렬이 되어있으므로, bubble정렬과 같이 한칸씩 오른쪽로 당겨오게 됩니다. 반면 선택정렬은 기준점 i를 기준으로 정렬되지 않은 모든 값들에 대해서 하나하나씩 검사하면서 최소의 값을 찾습니다. int i, j, min; for(int i=0; i
[알고리즘] 삽입정렬 쉽게 생각하기 선택정렬은 왼쪽을 기준으로 가장 작은 값을 찾아가는 방식으로 정렬을 진행합니다.. 버블정렬은 오른쪽을 기준(i점)으로 두고 반대편 왼쪽(j점)에서 0으로 두고 i를 하나하나씩 늘려가는 방법으로 정렬을 진행하는 것이었습니다. 이제 왼쪽을 기준(i점)을 시작점으로 두고 하나하나씩 정렬을 진행하는 방법을 알아보겠습니다. 왼쪽 기준은 두 가지로 나뉘는데요, 왼쪽을 기준으로 안쪽을 정렬하느냐, 왼쪽 기준으로 오른쪽으로 정렬하느냐로 나뉩니다. 여기서 왼쪽(정렬된 쪽)은 이미 정렬 된 곳에 삽입한다고 해서 삽입정렬이라고 부릅니다. 이번에는 삽입정렬을 알아보겠습니다. 삽입정렬의 기본 아이디어는 새로 나온 지점 n에 대해서 안쪽에 있는 값을 하나하나씩 다 순차적으로 검사한다는 점입니다. 그런데 이미 정렬이 되어있으므로,..