전체 글

AI/MachineLearning

[ML] Deep Neural Networks

이 글은 충남대학교 양희철 교수님의 수업을 듣고 작성한 글입니다    1. Deep Neural networks(DNN) Hidden Layer를 늘리면 사람의 뉴런처럼 더 많은 레이어를 가지기 때문에 비선형 문제에 대해서도 좋은 성능을 보인다. (레이어를 늘림 => 가중치, 파라미터 수 증가 => 더 복잡한 문제 해결 가능) 따라서 DNN은 아주 큰 크기로 나아간다.   앞에서 히든 노드 수를 늘려도 근사하게 따라갈 수 있다는 universal approximation theorem에 대해서 배웠었다. 그럼 히든 레이어를 늘리는 것과 히든 레이어의 노드 수를 늘리는 것의 차이는 무엇이고 뭐가 더 좋을까? 더보기 => 하나의 히든 레이어에 노드 수를 많이 두는 것은 근사하게 따라갈 수 있으나 너무 비효율..

AI/MachineLearning

[ML] Neural Networks

이 글은 충남대학교 양희철 교수님의 수업을 바탕으로 작성한 글입니다   1. Neural Network 신경망 구조로 뉴런들을 많이 연결시켜서 신호를 전달한다. 신경의 전달 과정을 수학적으로 모방(신경에 전달되는 값이 변화를 일으키며, 즉 weight가 곱해져서 전달하는 머신러닝 모델의 가장 일반적 형태이다  x1, x2에 적절한 weight가 곱해진 값을 다 더하면 0보다 크냐, 작냐를 물어보고 0(decision boundary)보다 크면 1, 작으면 -1이다의 함수로 모델링한다. 이러한 구조는 가장 linear한 경계를 가지는 분류 모델이다  좀 더 일반화해서 나타내보자  i개의 feature가 있고 각각에 대해서 가중치를 곱해주고 bias가 더해진다. 이를 가중합이라고 한다. 이 가중합을 함수를 ..

AI/MachineLearning

[ML] Ensemble method

이 수업은 충남대학교 양희철 교수님의 수업을 듣고 작성한 글입니다.    이전 시간까지는 어떤 머신러닝 알고리즘이 있는지, 이들이 어떻게 사용되고 어떤 장단점이 있는지에 대해 주로 학습하였다. 이번 시간에는 이들의 성능을 높일 수 있는 방법에 대해 알아보자      본격적으로 알아보기 전에 앙상블이 뭐하는 것이고, 어떻게 진행되는지를 간략하게 한번 보자. 이해하기 쉽게 Q&A 방식으로 보도록 하자.    앙상블이란 하나의 문제를 풀기 위해 여러 개의 모델을 활용하는 것에 초점을 두고 있다.   Q. 여러 개의 모델은 어떻게 얻을 수 있을까요?더보기A. Data의 feature 중 일부를 랜덤하게 추출 => model 하나를 생성 => 다시 data의 feature 중 일부를 랜덤하게 추출 => model..

[TIL]

[2024-12.01] 빅데이터 AI 해커톤 대회를 마치며...

지난 주 토요일에 급하게 팀을 재구성하고 주제를 급하게 내면서 참여했던 이번 해커톤은 정식적인 대회에서 경험한 첫번 째 해커톤이었다. 정말 주변에서 들리는 문제들을 해결하기 위해 생각해낸 단순한 아이디어였지만 팀원들과 상의 끝에 내 아이디어가 뽑혔고 서류까지 작성해서 내게 되었다. 그런데 이게 뽑혀서 본선까지 가게되고 어제 대회를 마칠 때 내 손엔 최우수상이 들려있었다.  끝까지 최선을 다해준 우리 팀원들, 우리를 믿고 가이드를 해주신 멘토님, 서로 으샤으쌰하면서 같이 수상한 같은 동아리의 다른 팀들까지 너무 고맙고 학교에 입학하고 처음으로 상을 탄 것이라 감회가 더 남다른거 같다. 이번 해커톤에서 배운 가장 큰 점은 좋은 결과를 뽑아내는 것도 중요하지만 그를 위해 팀원들과 어떻게 협력할 것인가, 다른 ..

백준 알고리즘 문제 풀이/Dijkstra

[백준] 1916번 최소비용 구하기

1. 문제https://www.acmicpc.net/problem/1916    문제N개의 도시가 있다. 그리고 한 도시에서 출발하여 다른 도시에 도착하는 M개의 버스가 있다. 우리는 A번째 도시에서 B번째 도시까지 가는데 드는 버스 비용을 최소화 시키려고 한다. A번째 도시에서 B번째 도시까지 가는데 드는 최소비용을 출력하여라. 도시의 번호는 1부터 N까지이다.입력첫째 줄에 도시의 개수 N(1 ≤ N ≤ 1,000)이 주어지고 둘째 줄에는 버스의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 그리고 셋째 줄부터 M+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가 주어진다. 그리고 그 다음에는 도착지의 도시 번호가 주어지고 또 그 버스 비용이 주어진다. 버..

백준 알고리즘 문제 풀이/DFS & BFS

[백준] 1260번 DFS와 BFS

1. 문제https://www.acmicpc.net/problem/1260      문제그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다.입력첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사이에 여러 개의 간선이 있을 수 있다. 입력으로 주어지는 간선은 양방향이다.출력첫째 줄에 DFS를 수행한 결과를, 그 다음 줄에는 BF..

AI/DeepLearning

[DL] Performance Optimization

결과적으로 우리가 만든 모델의 성능이 잘 나와야한다. 우리는 CPU/GPU에 관한 내용을 제외하고 알아보도록 하자.    1. 성능 최적화  # 데이터를 사용한 성능 최적화● 많은 데이터를 수집한다. ● 임의의 데이터를 생성한다. ● 데이터의 범위를 조정한다. ex) sigmoid 사용 시 데이터셋의 범위 0~1, 하어퍼볼릭 : -1 ~ 1   # 알고리즘을 이용한 성능 최적화  k-NN, RNN, LSTM, GRU ... 우리가 배운 머신러닝, 딥러닝 알고리즘들 등등   # 알고리즘 튜닝을 위한 성능 최적화● 가장 많은 시간이 소요된다. ● 모델을 하나 선택하여 훈련시키려면 하이퍼파라미터를 변경하면서 훈련시키고 최적의 성능을 도출한다.1. 진단  2. 가중치  3. 학습률  4. 활성화 함수  5. 배..

AI/DeepLearning

[DL] LSTM & GRU & 양방향 RNN

RNN은 가중치가 업데이트 되는 과정에서 기울기가 1보다 작은 값이 계속 곱해지기 때문에 기울기가 사라지는 기울기 소멸 문제가 발생한다. 이를 해결하기 위해 우리는 확장된 모델을 사용한다.     1. LSTM 기울기 소멸 문제를 해결하기 위해 망각 게이트, 입력 게이트, 출력 게이트라는 새로운 요소를 은닉층의 각 뉴런에 추가한다.  # 망각 게이트● 과거 정보를 어느정도 기억할 지 기억한다.● 과거 정보와 현재 데이터를 입력받아 시그모이드를 취한 후 그 값을 과거 정보에 곱한다.● 시그모이드의 출력이 0이면 과거 정보는 버리고, 1이묜 과거 정보는 온전히 보존한다.● 0~1 사이의 출력 값을 가지는 이전 입력층에서 입력받은 h(t-1)과 새로운 입력 값인 xt를 입력 값으로 받는다.    # 입력 게이..

AI/DeepLearning

[DL] RNN

CNN은 이미지에 대해 적용되었다. 그렇다면 이미지가 아닌 단어, 문장 같은 건 어떻게 해야지?   1. RNN RNN은 시간적으로 연속성이 있는 데이터를 처리하려고 고안한 것이다! 이때 기억이라는 것을 이용한다. 기억이란 현재까지 입력 데이터를 요약한 정보를 말한다. 따라서 새로운 입력이 네트워크로 들어올 때마다 기억을 조금씩 수정한다. 최종적으로 남겨진 기억은 모든 입력 전체를 요약한 정보이다. => 사람과 굉장히 유사하지 않은가? 사람도 새로운 정보를 알게되면 이전에 알고 있던 것에서 이를 추가하지 않는가!  위의 그림에 대해서 짧게 설명하겠다.● 첫번째 입력(x1)이 들어오면 첫번째 기억(h1)이 만들어진다. ● 두번째 입력(x2)이 들어오면 기존 기억(h1)과 새로운 기억을 참고하여 새 기억(h..

CS/Operating System

[OS] Overview

이 글은 충남대학교 최훈 교수님의 운영체제 수업 및 자료를 바탕으로 작성한 글입니다  1. OS란?컴퓨터 응용 프로그램이 실행되는 과정에서 컴퓨터 하드웨어들을 제어하고 응용 프로그램 실행 결과를 보일 수 있도록 컴퓨터 내부 동작을 관리하는 소프트웨어이다. 운영체제 내부에서 운영체제가 어떻게 동작한다라는 것을 이해하면 나중에 응용 프로그램을 구현할 때도 효과적으로 어플리케이션이 더 빨리, 안전하게 돌아가는 프로그램을 구현할 수 있기 때문이다!! 따라서 우리는 OS를 배워야 한다!!   # OS의 기능1. Process management 2. Process scheduling 3. I/O device management 4. Booting  : 보조기억장치에 들어가 있는 운영체제를 실행할 수 있도록 컴퓨터..

Cho대뿟다
Dev를Even하게