일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 선형대수
- DFS
- pytorch
- 다이나믹 프로그래밍
- 퀵정렬
- GRU
- LSTM
- 정렬
- 큐
- 스택
- 머신러닝
- 그리디
- Machine Learning
- AI
- 최단 경로
- BFS
- 삽입정렬
- RESNET
- 계수정렬
- 재귀함수
- 딥러닝
- rnn
- 캐치카페신촌점 #캐치카페 #카페대관 #대학생 #진학사 #취준생
- 선택정렬
- 이진 탐색
- 알고리즘
- 인공지능
- Today
- Total
목록전체 글 (88)
hyeonzzz's Tech Blog

2.1 파이토치 개요 PyTroch 파이토치 : 파이썬 기반의 딥러닝 프레임워크 파이토치 특징 및 장점 GPU에서 텐서 조작 및 동적 신경망 구축이 가능한 프레임워크 - GPU : 연산 속도를 빠르게 하는 역할 GPU를 사용하면 빠른 기울기 계산(미분)이 가능하다 CUDA, cuDNN이라는 API를 통해 GPU를 연산에 사용할 수 있다 GPU 사용은 딥러닝 학습에서 필수적이다 - Tensor : 파이토치의 데이터 형태 텐서는 단일 데이터 형식으로 된 자료들의 다차원 행렬이다 텐서는 .cuda()를 사용해서 GPU로 연산을 수행하게 할 수 있다 - 동적 신경망 : 훈련을 반복할 때마다 네트워크 변경이 가능한 신경망 학습 중에 은닉층을 추가하거나 제거할 수 있다 Define by Run : 연산 그래프를 정..

1.1 인공지능, 머신러닝과 딥러닝인공지능인공지능 : 인간의 지능을 모방하여 사람이 하는 일을 컴퓨터가 할 수 있도록 하는 기술 인공지능 > 머신러닝 > 딥러닝 머신러닝과 딥러닝의 차이 1.2 머신러닝이란머신러닝머신러닝 : 컴퓨터 스스로 대용량 데이터에서 지식이나 패턴을 찾아 학습하고 예측을 수행하는 것 머신러닝 학습 과정1. 학습 단계 : 훈련 데이터를 머신러닝 알고리즘에 적용하여 학습시킨다. 학습 결과로 모형이 생성된다2. 예측 단계 : 생성된 모형에 새로운 데이터를 적용하여 결과를 예측한다 * 특성 추출 : 데이터별로 어떤 특징을 가지고 있는지 찾아내고, 그것을 토대로 데이터를 벡터로 변환하는 작업 머신러닝의 주요 구성 요소데이터 : 머신러닝이 학습 모델을 만드는데 사용하는 것데이터의 특징이 잘 반..

1.1 인공지능과 딥러닝 인공지능 : 인간의 학습, 추론, 지각 및 언어능력을 컴퓨터가 모방할 수 있도록 연구하고 구현하는 분야 인공지능 : 머신러닝과 딥러닝을 포함한 컴퓨터 과학, 전산학, 통계 및 개발 등 모든 관련 기술 머신러닝 : 정형 데이터를 활용한 인공지능 분야 딥러닝 : 비정형 데이터를 활용한 인공지능 분야 1.2.2 머신러닝 구분 지도학습 : 정답이 주어진 데이터를 활용하여 알고리즘을 통해 산출된 예측값과 정답을 비교하며 학습하는 방법 비지도학습 : 정답이 주어지지 않은 데이터를 탐색하여 패턴이나 내부 구조를 파악하는 학습 방법 강화학습 : 자신이 한 행동에 대한 보상을 받으며, 그 보상을 최대화할 수 있는 행동을 찾는 학습 방법 1.2.3 지도학습 지도학습 : 정답 혹은 레이블이 있는 환..

1. LSTM (long short-term memory) : 기존의 순환 신경망 모델에 장기기억을 담당하는 부분을 추가한 것 출처 : https://colah.github.io/posts/2015-08-Understanding-LSTMs/ 1) cell state : 장기기억을 담당하는 부분 x : 기존의 정보를 얼마나 남길 건인지 비중을 곱함 + : (현재 들어온 데이터와 기존의 은닉 상태)를 통해 정보를 추가함 2) forget gate : 어떤 과거 정보를 잊을지 (현재의 입력값과 직전 시점의 은닉 상태값)을 입력으로 받음 σ : 기존의 정보를 얼마나 전달할지 비중을 정함 3) input gate : 어떤 새로운 정보를 셀 상태에 추가할지 (현재의 입력값과 직전 시점의 은닉 상태값)을 입력으로 받..

최단 경로 알고리즘 : 가장 짧은 경로를 찾는 알고리즘 다익스트라 최단 경로 알고리즘 : 그래프에서 여러 개의 노드가 있을 때, 특정한 노드에서 출발하여 다른 노드로 가는 각각의 최단 경로를 구해주는 알고리즘 '음의 간선'이 없을 때 정상적으로 동작한다. 음의 간선 : 0보다 작은 값을 가지는 간선 현실 세계의 간선은 음의 간선으로 표현되지 않으므로 GPS 소프트웨어의 기본 알고리즘으로 채택되곤 한다 그리디 알고리즘으로 분류된다. ('가장 비용이 적은 노드'를 선택해서 임의의 과정을 반복하기 때문) 알고리즘의 원리 출발 노드를 설정한다. 최단 거리 테이블을 초기화한다. 방문하지 않은 노드 중에서 최단 거리가 가장 짧은 노드를 선택한다. 해당 노드를 거쳐 다른 노드로 가는 비용을 계산하여 최단 거리 테이블..

다이나믹 프로그래밍 (동적 계획법) : 메모리 공간을 약간 더 사용하면 연산 속도를 비약적으로 증가시킬 수 있는 방법 피보나치 수열 재귀 함수로 구현 def fibo(x): if x == 1 or x == 2: return 1 return fibo(x-1) + fibo(x-2) print(fibo(4)) 문제점 : f(n) 함수에서 n이 커질수록 수행 시간이 기하급수적으로 늘어난다 시간 복잡도 : O(2^N) 동일한 함수가 반복적으로 호출된다. f(n)에서 n이 커질수록 반복해서 호출하는 수가 많아진다. 다이나믹 프로그래밍 조건 큰 문제를 작은 문제로 나눌 수 있다. 작은 문제에서 구한 정답은 그것을 포함하는 큰 문제에서도 동일하다. 메모이제이션 기법(캐싱)으로 구현 (탑다운 방식) # 한 번 계산된 결..

순차 탐색 : 리스트 안에 있는 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 차례대로 확인하는 방법 정렬되지 않은 리스트에서 주로 사용한다 시간만 충분하다면 항상 원하는 데이터를 찾을 수 있다 순차 탐색 코드 # 순차 탐색 소스코드 구현 def sequential_search(n, target, array): # 각 원소를 하나씩 확인하며 for i in range(n): # 현재의 원소가 찾고자 하는 원소와 동일한 경우 if array[i] == target: return i + 1 # 현재의 위치 반환 (인덱스는 0부터 시작하므로 1 더하기) return -1 # 원소를 찾지 못한 경우 -1 반환 print("생성할 원소 개수를 입력한 다음 한 칸 띄고 찾을 문자열을 입력하세요.") inpu..
# N, M을 공백을 기준으로 구분하여 입력 받기 n, m = map(int, input().split()) # 2차원 리스트의 맵 정보 입력 받기 graph = [] for i in range(n): graph.append(list(map(int, input()))) # DFS로 특정한 노드를 방문한 뒤에 연결된 모든 노드들도 방문 def dfs(x, y): # 주어진 범위를 벗어나는 경우에는 즉시 종료 if x = n or y = m: return False # 현재 노드를 아직 방문하지 않았다면 if graph[x][y] == 0: # 해당 노드 방문 처리 graph[x][y] = 1 # 상, 하, 좌, 우의 위치들도 모두 재귀적으로 호출 dfs(x - 1, y) dfs(x, y - 1) dfs(x..

BFS BFS : 가까운 노드부터 탐색하는 알고리즘이다. 너비 우선 탐색이라고도 부른다. BFS 동작 과정 탐색 시작 노드를 큐에 삽입하고 방문 처리를 한다. 큐에서 노드를 꺼내 해당 노드의 인접 노드 중에서 방문하지 않은 노드를 모두 큐에 삽입하고 방문 처리를 한다. 2번의 과정을 더 이상 수행할 수 없을 때까지 반복한다. 큐 자료구조에 기초해 구현한다. O(N)의 시간이 소요된다. 일반적인 경우 수행 시간이 DFS보다 좋은 편이다. BFS 코드 from collections import deque # BFS 메서드 정의 def bfs(graph, start, visited): # 큐 구현을 위해 deque 라이브러리 사용 queue = deque([start]) # 현재 노드를 방문 처리 visite..

DFS DFS : 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘이다. 깊이 우선 탐색이라고도 부른다. 특정한 경로로 탐색하다가 특정한 상황에서 최대한 깊숙이 들어가서 노드를 방문한 후, 다시 돌아가 다른 경로로 탐색한다 그래프 노드(정점)와 간선으로 표현된다 그래프 탐색 : 하나의 노드를 시작으로 다수의 노드를 방문하는 것 두 노드가 인접한다 = 두 노드가 간선으로 연결되어 있다 그래프를 표현하는 2가지 방식 인접 행렬 : 2차원 배열에 각 노드가 연결된 형태를 기록 INF = 99999999 # 무한의 비용 선언 #2차원 리스트를 이용해 인접 행렬 표현 graph = [ [0, 7, 5], [7, 0, INF], [5, INF, 0] ] print(graph) [[0, 7, 5], [7, 0, 9..