전체 글

MBA + 프로그래밍 공부를 하고 있는 기영이 누나의 개발 일기장
𝑷𝒓𝒐𝒈𝒓𝒂𝒎𝒎𝒊𝒏𝒈/𝐴𝐼

[ML/DL] Gradient descent (경사 하강법)

블로그에 딥러닝에 대한 이론 지식 등도 정리를 해보려고 한다! 필자도 현재는 많이 배우는 단계라 (뭐든지 해보고 부딪히면서 배우는 스타일... 🤣), 공부한 내용을 글로 정리해두면 더 기억에 남을 것이라는 생각이 들었다. 오늘은 딥러닝에서 가장 흔하게 사용되는 알고리즘 중 하나인 Gradient descent, 즉 경사 하강법에 대해 알아보자! Gradient Descent (경사 하강법) 경사 하강법이란 1차 미분계수를 이용하여 에러를 최소화하기 위해 함수의 최소값을 찾아가는 iteractive한 방법이다. 쉽게 말하면 임의의 초기값을 기준으로, 최소값을 찾아나가는 데에 최적화된 알고리즘이다. 머신러닝에서는 경사하강법을 사용하여 모델의 매개변수를 업데이트하는 식으로 진행된다. 더 쉽게 이해하기 위해 위..

𝑷𝒓𝒐𝒈𝒓𝒂𝒎𝒎𝒊𝒏𝒈/𝐴𝐼

[AI/DL] Image Segmentation

입사 후, 프로젝트에서 DeepLab V3라는 딥러닝 모델을 적용한 경험이 있다. 따라서 모델을 왜 쓰고, 어떻게 훈련을 하고 inference는 어떻게 해야하는 지 등에 대해서 알아보면 좋을 것 같아 이 포스팅을 쓰게 되었다! 먼저 DeepLab V3 는 Semantic segmentation 모델의 일종이다. 그렇다면 Semantic Segmentation이란 무엇일까? Semantic segmentation에 대해 이야기 하기 전에, Image Segmentaiton은 Object detection과 얼마나 다를까? 오늘은 여기에 대한 궁금증들을 정리해보자! (추후, DeepLab V3에 대한 내용도 정리 예정이다 ㅎㅎ) 시작하기에 앞서, 아래 이미지를 비교해보자! Classification 은 단..

𝑷𝒓𝒐𝒈𝒓𝒂𝒎𝒎𝒊𝒏𝒈/𝐴𝐼

[AI] Android Studio, flutter project에 딥러닝 모델 배포, 적용하기 (Pytorch-lite)

간만의 포스팅 전 간단한 근황 토크..! 나는 현재 회사에 취직하여 AI 연구원으로 업무를 하고 있다! 일단 이건 AI와 직접적으로 관련이 된 건 아니지만, (굳이 따지자면 Android Studio에 더 맞을듯...) 새 카테고리도 만들었겠다, 아주 연관이 없는 건 아니니, 배운 점에 대하여 글을 남겨보려고 한다! 일을 한지는 이제 막 2개월이 넘었지만 아직 배울 것이 태산같다. 취업에 대해서는 조만간 회고를 남겨야겠다 ㅎㅎㅎ! 아무튼, 2개월동안 신입으로서 맡은 내 업무는 출시 예정인 애플리케이션의 성능을 높이는 것이었다. 그리고 그 과정에서 딥러닝을 모델 및 파이썬을 사용했다. 하지만 출시 예정인 애플리케이션은 파이썬이 아닌 플러터 / 안드로이드...! 물론 지금은 다 해냈지만, 개발할 당시에는 안..

𝑷𝒓𝒐𝒈𝒓𝒂𝒎𝒎𝒊𝒏𝒈/𝐽𝐴𝑉𝐴

[JAVA / 모던 자바 인 액션] 리액티브 프로그래밍

수년 전까지 대규모 어플리케이션은 수십 대의 서버, GB의 데이터, 수초의 응답시간 등 당연하게 여겨졌던 몇 시간의 유지보수 등의 특징이 있음. (이전에는 몇초정도 걸리는 응답시간이 당연했지만, 요새는 수초의 응답이 걸리는 페이지는 그냥 닫아버린다…) 하지만 오늘날은 다음과 같은 변화를 이유로 리액티브 프로그래밍 패러다임의 중요성이 점차 커지고 있다. 빅데이터 : 보통 빅데이터는 페타바이트(Petabyte, PB, 10 bytes) 단위로 구성되며 매일 증가한다. 다양한 환경 : 모바일 디바이스에서 수천 개의 멀티 코어 프로세서로 실행되는 클라우드 기반 클러스터에 이르기 까지 다양한 환경에 애플리케이션이 배포된다. 사용 패턴 : 사용자는 1년 내내 항상 서비스를 이용할 수 있으며 밀리초 단위의 응답 시간..

𝑷𝒓𝒐𝒈𝒓𝒂𝒎𝒎𝒊𝒏𝒈/𝐴𝐼

[AI] GPT에 대한 고찰

석사 시절 친했던 친구와 오래간만에 연락을 했는데, GPT에 대해서 대화를 나눴다. GPT를 통해서 파이썬 코드를 작성해봤더니 꽤나 괜찮은 코드가 나왔다는 것... 실제로 GPT를 이용한 논문 작성 때문에 곤란해하는 학계의 소식을 접했던 적이 있어서 얼마나 완성도 있는 텍스트를 만들어내는 건지 알아보고 싶었다. Chat GPT? Chat GPT, 즉 챗GPT는 OpenAI 라는 회사가 개발한 대화 전문 인공지능 챗봇이다. 사용자가 대화창에 질문을 입력하면 AI가 적당한 답변을 준다. 저장된 데이터 중 적절한 답을 하는 원리 자체는 수년전 유행했던 심심이라는 챗봇과 비슷하다. 하지만 Chat GPT는 일반적인 챗봇과 다르게 정교한 답변을 구사할 수 있다! 다시 말해, 답변의 퀄리티가 엄청나다는 것이다. 단..

𝑷𝒓𝒐𝒈𝒓𝒂𝒎𝒎𝒊𝒏𝒈/𝐽𝐴𝑉𝐴

[JAVA / 모던 자바 인 액션] JAVA 8 부터의 컬렉션 API 개선

두 번째 스터디에서는 컬렉션 API의 개선에 대해서 공부해보았다. Java 8 부터는 기존의 컬렉션 API를 더 간결하고 효율적으로 사용할 수 있도록 개선되었다고 한다! 본문을 통해 더 자세히 알아보자. 8.1 컬렉션 팩토리 기존 작은 컬렉션을 만드는 팩토리 메서드로는Arrays.asList() 가 존재했다. List dogs = Arrays.asList("Poodle", "Jindo", "Schnauzer"); 하지만 고정 크기의 리스트를 만들었으므로, 요소를 갱신할 순 있지만 새 요소를 추가하거나 요소를 삭제할 순 없다. (UnsupportedOperationException 발생) List dogs = Arrays.asList("Poodle", "Jindo", "Schnauzer"); dog.add..

𝑷𝒓𝒐𝒈𝒓𝒂𝒎𝒎𝒊𝒏𝒈/𝐽𝐴𝑉𝐴

[JAVA] Collection - Map (HashMap, Hashing)

오늘은 Map에 대해서 알아보자! Map은 한 쌍으로 묶인 데이터를 사용할 때 사용하게 되는데, 이번 포스팅을 통해 자세히 정리해보도록 하자! Map 이란? 맵(Map)은 Key를 Value에 매핑하는 객체이다. 조금 더 쉽게 말해보자면, 각각의 대응 관계를 쉽게 표현하는 자료형이다. 예를 들어 "이름" : "기영이"의 경우, Key에 "이름"이, Value(값)에 "기영이"가 들어가는 것이다. 박응용님의 점프 투 자바에서는 Map을 사전과 같다고 표현한다. 한 단어(Key)에 뜻(Value)이 부합되는 것 처럼, Map은 Key와 Value를 한 쌍으로 갖는 자료형이기 때문이다. 자바의 공식 문서에서도 Map 인터페이스는 추상 클래스인 Dictionary class를 대신한다고 한다. HashMap 이..

기누
기영이 누나의 개발일기