본문 바로가기

GAN - 개념 이해 GAN - 개념 이해 GAN은 Generative adversarial network 의 약자로, 우리말로 생산적 적대 신경망이라는 뜻을 갖습니다. 기존의 다른 딥러닝 모델과 달리 GAN은 각자 다른 역할을 하는 2개의 모델로 학습을 진행합니다. 아래의 그림을 통해 설명합니다. Generator는 위조 지폐, 즉 Fake data를 만드는 일을 합니다. Discriminator는 Generator가 만든 위조 지폐를 확인 할 때도 있고, 진짜 지폐를 확인 할 때도 있습니다. 무엇이든 확인을 하고, "이것은 위조 지폐다." 또는 "진짜 지폐다." 처럼 판별하는 역할을 합니다. 이것이 GAN의 핵심인 두 모델이 하는 일입니다. 그러나 그냥 Generator는 위조 지폐를 만들고, Discriminator는 ..
NPM을 이용한 CDN 사용 NPM 저장소에 등록된 패키지의 코드를 CDN으로 사용 할 수 있다. CDN이란, Contents Delivery Network - 콘텐츠 전송 네트워크로, 서버와 사용자 사이의 물리적 거리를 줄여 웹 페이지 콘텐츠 로드 지연을 최소화하는, 촘촘히 분산된 서버로 이루어진 플랫폼이다. CDN의 장점 웹사이트의 로딩속도 개선 (case by case) 인터넷 회선 비용 절감 컨텐츠 제공의 안정성 웹사이트 보안 개선 사용방법 https://cdn.jsdelivr.net/npm/패키지명@버전/파일명 Example Website URL Script Src
IT신기술을 익히는 상황에서 영어에 대한 고찰 왜 영어를 공부해야 하는가? IT계열에서 새로운 기술을 배울 때, 한국어보다는 영어로 설명되어 있는 기술이 많다. 따라서 내가 영어를 할 줄 모른다면 새로운 오픈소스 또는 논문을 접할 때, 그 사용법이 영어로 적혀있다면 이해하는데에 어려움이 따를 것이다. 또한 영어로 촬영된 동영상 강의 밖에 없다면 영어를 못하면 강의를 이해하기 굉장히 힘들것이다. 현재 나는 AI를 공부하고자 CS231n의 강의를 보고 공부하고 싶지만, 영어를 못해서 큰 어려움이 따르는 상황이다. 따라서 영어를 배워야 할 필요가 있다. 그렇다면 어떻게 영어를 공부할 것인가? 자. 지금 당장 나한테 영어가 필요한 부분은 위해 적었듯이, IT계열에 관련한 오픈소스, 논문 등을 해석하고 습득하는 능력과 영어로 된 동영상을 알아듣는 것이다. 무..
SW 마에스트로 합격 후기 SW마에스트로에 합격했다. 1차 서류 전형, 2차 인적성 검사, 3차 코딩테스트, 4차 심층면접의 과정을 거쳐 합격하게 되었는데, 매 단계마다 가졌던 생각을 기록해보고자 한다. 1차 서류 전형 간단한 인적사항과 자기소개서를 작성하는 전형이다. 1차 전형 마감일이 2월 22일이었던 것으로 기억하는데, 나는 모집공고를 열흘전에 접하게 되었다. 급하게 자기소개서를 작성해보고자 하지만 입시때도 자기소개서를 제대로 안 쓴 나에게는 4가지 과정 중 가장 힘든 관문이 아니었나 싶다. 자기소개서를 작성하려 내가 살아온 시간을 되돌아 보았는데, 생각보다 재미없게 살았다는 생각이 들었다. 이렇게나 쓸 얘기가 없었나? 앞으로는 좀 더 자랑할만한 이야기를 많이 만들어야겠다고 다짐했다. 어찌됐든 덕분에 내가 살아온 시간을 반성..
각 프로젝트의 경험 정리 프로젝트 목록 지뢰찾기 메신저 Pookle 프라임(외주) 세원매딕스(외주) 지뢰찾기 C언어를 사용해 만들었던 프로젝트이다. 그 당시의 나는 BFS 알고리즘을 몰랐는데 지금 생각해보니 사용했던 방법이 BFS 였었다. 지뢰의 유무를 검사하는 과정에서 여러 시행착오를 겪으며 완성했던 기억이 있다. 메신저 JAVA를 사용해 만들었떤 프로젝트이다. Swing으로 GUI를 구성하고, 소켓을 이용하여 서버와 클라이언트의 개념을 구현하였다. 처음 프로젝트를 시작했던 계기는 일 대 일 채팅프로그램의 예제를 보고 이를 응용하면 '단체 채팅방도 만들 수 있지않을까' 라는 생각에서 였다. 일 대 일로 소켓을 교환하는 과정을 보고 단체 채팅방을 만들 때 처음 든 생각은 각각의 한 사람이 데이터를 모든사람한테 뿌리..
머신러닝이란..? 머신러닝 사람이 할 수 없거나 혹은 하기 어려운 일련의 작업을 수행하기 위해 기계를 학습시키는 방법 머신러닝의 종류 지도학습: 여러 문제와 정답의 예시를 입력하여 학습시킨 후, 그 데이터를 기반으로 다른 경우의 답을 구하는 것 비지도학습: 사람의 개입없이 컴퓨터가 스스로 어떠한 결과를 구해내는 것 강화학습: 컴퓨터가 행동을 했을 때, 보상을 주는 것으로 스스로 학습시키는 것. 강화학습의 목표는 보상이 최대가 되는 행동을 하는 것 딥러닝 머신러닝의 한 종류로서, 인공신경망을 구성하여 사고를 하게 하는 것 대량의 데이터를 기본적으로 학습하고, 이후로 계속 학습하면서 완벽한 신경망을 구성한다. 많은 공부가 필요한 분야인 것 같다.
배워온 언어들을 선택했던 이유 C, C++ 뭣도 모르고 정보영재원에서 가르쳐주길래 배웠다. 이 언어를 가르친 이유를 유추해보자면 그 당시에 메이저했고, 많이 사용되었고, 다른 언어들이 C언어를 기초로해서 만들어졌기 때문이 아닐까 싶다. Java Java의 객체지향적인 특징을 이해하고자 배웠다. 클래스와 상속을 이용한 객체지향적 프로그래밍은 대규모 프로젝트에서 요긴하게 쓰이기 때문에, 알아둘 필요가 있다고 생각했다. HTML, CSS, JavaScript 웹을 내가 구성할 수 있다는 점에서 흥미가 생겨서 배웠다. 나만의 홈페이지를 만들어 보고 싶었고, 내가 만든 홈페이지를 많은 사람들에게 보여주고 유용하게 쓰여지는게 목표이다. Angular, NodeJS, Flask, DJango 주력인 기술을 만드는 것도 중요하지만, 지금의 나는 그..
기억에 남는 이슈 Pookle 프로젝트를 진행하면서 프론트엔드를 Angular를 사용하여 개발하였는데 아파치 톰캣을 사용하여 서버에 올리는 과정에서, Angular의 SPA라는 특징 때문에 라우터의 제어가 올바르게 이루어지지 않았던 이슈가 있다. 해결방법으로는 호스트 주소와 패스 사이에 #을 삽입해주는 방법이있었다. ex) http://pookle.org/#/timeline