개발
-
[논문] CNN - AlexNet, 2012개발/머신러닝-딥러닝 2022. 3. 8. 18:01
제가 이해한 내용을 정리한 글입니다. 오류가 있으면 고쳐주세요! 2012년에 CNN을 사용해 ILSVRC에서 압도적으로 1등한 모델. 기반이 되는 논문은 AlexNet 이다. 배경 기계학습의 성능을 높이기 위해서는 큰 데이터셋이 필요하다. 큰 데이터를 잘 학습하기 위해서는 용량이 큰 모델이 필요하다. CNN은 비슷한 규모의 피드포워드 신경망보다 간선과 파라미터가 적으므로 학습이 쉽다. (물론 best-perfomance는 조금 떨어질 수 있다.) 모델 특징 모델은 이미지의 속성을 찾는 5개의 Conv층과 속성으로 이미지를 분류하는 3개의 FC층이 있다. 여기서 Conv층을 조금이라도 제거한다면 성능이 떨어짐을 확인했다. 두 개의 GPU - 피드포워드 신경망보다 적지만 여전히 GPU로 학습하기에는 용량이 ..
-
[알고리즘] 이진 탐색개발/자료구조와 알고리즘 2022. 3. 4. 17:56
이진 탐색 (이분 탐색, Binary Search) 이진 탐색 트리와 같이 정렬된 리스트에서 탐색 범위를 두 부분으로 나누어 특정 값을 찾는 방식 앞이나 뒤에서부터 순서대로 원하는 값을 찾는 순차 탐색보다 훨씬 빠르다. 순차 탐색은 $O(N)$의 시간 복잡도를 가지나, 이진 탐색은 $O(logN)$의 속도를 가진다. 빠르기 때문에 효율성을 따져서 무언가를 찾는 문제에서 생각해 볼법하다. 알고리즘 우선 정렬된 리스트에서 최소값의 인덱스를 left, 최대값의 인덱스를 right로 둔다. left와 right를 통해 mid를 만들어준다. mid와 찾는 값$x$ 비교 mid가 더 큰 경우 left = mid+1, mid가 더 작은 경우 right = mid-1 2, 3, 4번을 left>right가 될 때까지 ..
-
[프로젝트] 해양 재난 상황판 (2)개발/프로젝트 2022. 3. 1. 22:22
GitHub - LJBang/make_RESTAPI: Spring Boot를 이용해 DB의 데이터를 제공하는 rest api 만들기 Spring Boot를 이용해 DB의 데이터를 제공하는 rest api 만들기. Contribute to LJBang/make_RESTAPI development by creating an account on GitHub. github.com JAVA Springboot를 사용해서 REST API를 구축했다. DB 연결 가장 먼저 전에 구현한 DB를 JDBC를 이용해서 스프링부트와 연결해주었다. ///// application.properties ///// server.address=localhost server.port = 8080 spring.datasource.url ..
-
[자료구조] 해시(Hash)개발/자료구조와 알고리즘 2022. 2. 21. 21:12
해시 이번에는 해시, 해시테이블에 대해서 알아보자 이전에 배웠던 자료형들은 값을 여러가지 형태로 저장할 수 있었다. 그러나 원하는 자료형을 찾기란 쉽지않다. 예를들어 리스트에서 원하는 값을 찾기 위해서는 앞에서부터 순서대로 순회해야하며, 힙의 경우에서도 최소값, 최대값을 찾을 수 있을 뿐, 원하는 값을 찾을 수는 없다. 그래서 이번에 배울 자료형인 해시는 색인이 쉽게 만들어 졌다. 해시의 원리 해시는 값과, 이 값을 찾기위한 key를 사용한다. 파이썬의 딕셔너리와 비슷하다고 생각할 수 있는데, 딕셔너리도 해시로 이루어져있다. 가장 먼저 키를 해시함수에 입력한다. 해시함수는 키를 입력받아서 숫자로된 인덱스를 결과로 내는 함수이다. 해시함수의 출력으로 인덱스가 나오면 리스트와 비슷한 자료형 테이블의 인덱스 ..
-
[운영체제] OS의 구조(2)개발/OS 2022. 2. 21. 01:55
이번에는 지난번에 적은 OS의 구조에서 더 나아가서 각 OS들이 어떤 구조를 갖고있는지 알아보자 OS의 구현 당연하게도 OS도 언어로 만들어진다. 초기에는 어셈블리와 같은 언어로 만들었다. 그 이후엔 Algol, PL/1 과 같은 언어로 만들어졌다고 한다. 현재는 여러가지 언어를 황룔해서 만드는데, Lowest level은 C를 메인으로 하고, C++, PERL, Python 과 같은 언어들을 사용해 시스템 프로그래밍을 한다. 하이레벨 언어들은 다른 기기로의 전환이 쉬우나 느리다는 단점이 있다. Emulation은 non-native 기기에서 작동할 수 있다. Kernel 커널은 하드웨어인터페이스와 시스템 콜 인터페이스 사이에 위치하며 기능들을 제공한다. 하드웨어 자원을 적절하게 분배해주며, 시스템콜, ..
-
[운영체제] OS의 구조개발/OS 2022. 2. 18. 02:06
OS의 구조 이번에는 OS의 구조에 대해서 알아보자 지난 글에서 본 OS의 기능들을 보면 결국 OS는 사용자가 프로그램을 실행할때 적절한 환경을 제공해주는 것이다. 따라서 일반적인 OS들(Windows, Mac, Android 등)은 사용자가 더 쉽고 편한 환경에서 기기를 사용하도록 인터페이스를 제공한다. 이를 User Interface(UI)라 한다. UI에는 CLI, GUI, touch-screen등이 있다. Command Line Interface, CLI 명령어를 통해 프로그램을 실행하고 조작한다. 파일을 만들거나, 이동하거나.. 등등을 모두 명령어로 조작할 수 있다. Windows에는 cmd나 Powershell이 있고 Linux나 Mac에서는 Terminal이 대표적인 예라고 볼 수 있다. G..
-
[운영체제] 운영체제란?개발/OS 2022. 2. 17. 01:54
운영체제 운영체제란 일종의 소프트웨어로 어플리케이션 소프트웨어와 하드웨어 자원을 연결해주는 인터페이스 역할을 한다. 자원을 추상화하여 관리하고 동작시킨다. ->Resource manager 자원에는 CPU, Memory와 같은 물리적 자원일 수도 있고, process나 address space와 같은 virtual자원일 수도 있다. 물리적 자원들은 어플리케이션 SW가 사용하기 쉽도록 추상화 하여 가상의 자원으로 바꿔주고, 이러한 자원들을 다중화(Multiplexing)해서 여러 프로세스들이 사용할 수 있도록 공유한다. 또한 여러 프로세스들이 동시에 사용할 수 있도록 스케쥴링 기능도 제공한다. 프로세스 관리 프로세스란 쉽게 말해서 실행된 프로그램이다. 프로세스는 작업을 수행하기 위해서 CPU, memory..
-
[자료구조] 그래프개발/자료구조와 알고리즘 2022. 2. 16. 00:55
그래프 트리와 같이 노드와 간선으로 연결된 형태를 그래프라고 한다. 싸이클이 형성될 수 있기 때문에 계층적 자료구조라기 보다는 전체를 나타내는 형태로 생각할 수 있다. 따라서 부모-자식 관계나 루트노드 같은 성질이 없다. 위 그림에서 A-B-E-C-A의 사이클이 있다. 그래프에는 여러가지 특징이 있다. 먼저, 방향이 있는 그래프와 방향이 없는 그래프로 나눌 수 있다. 위에서 그린 그래프는 방향이 없는 그래프이고, 방향이 있는 그래프는 다음과 같다. 방향이 있을 때는 해당 방향으로만 진행할 수 있다는 특징이 있다. 다음으로는 모든 노드가 연결되어있지 않아도 된다는 것이다. 이를 비연결그래프, disjoint 그래프라 한다. 반면 모든 노드가 서로 연결되어있는 그래프는 완전그래프라 한다. 간선에 가중치를 둘..